Create View con suma sobre campo fecha

03/05/2006 - 19:15 por mayowr | Informe spam
Buenas tardes:

No se si se puede crear una vista en SQL donde una de las columnas
tenga una condición.

Me explico con los siguientes datos:
Apellido+Nombre FechaInicial Dias FechaReal
Ruiz Clara 1982/07/12 112 1982/11/01
Perez Pedro 2001/01/28 2001/01/28

La vista que estoy armando la tengo de la siguiente forma:

CREATE VIEW CALCFECHA
AS
SELECT EMP.EMPLE,
SUBSTRING(RTRIM(EMP.APELLIDO)+' '+
RTRIM(EMP.NOMBRE),1,35) AS NOMEMP,
EMP.F_INICIAL,
CONVERT(DECIMAL(10,2),dbo.DIAS (EMP.EMPLE)) AS DIAS1,
DATEADD(dd,dbo.DIAS(EMP.EMPLE),F_INICIAL) AS F_REAL
FROM EMP

Al ejecutar la vista, me muestra lo siguiente:
Apellido+Nombre FechaInicial Dias FechaReal
Ruiz Clara 1982/07/12 112 1982/11/01
Perez Pedro 2001/01/28 0

Y lo que requiero es que si Dias es 0, me deje en FechaReal, la
FechaInicial, así como lo hace cuando tengo un valor en Dias.

Gracias,
Mayo

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
03/05/2006 - 19:49 | Informe spam
Trata,

SELECT EMP.EMPLE,
SUBSTRING(RTRIM(EMP.APELLIDO)+' '+
RTRIM(EMP.NOMBRE),1,35) AS NOMEMP,
EMP.F_INICIAL,
CONVERT(DECIMAL(10,2),dbo.DIAS (EMP.EMPLE)) AS DIAS1,
case when dbo.DIAS(EMP.EMPLE) = 0 then FechaReal else
DATEADD(dd,dbo.DIAS(EMP.EMPLE),F_INICIAL) end AS F_REAL
FROM EMP


AMB

"" wrote:

Buenas tardes:

No se si se puede crear una vista en SQL donde una de las columnas
tenga una condición.

Me explico con los siguientes datos:
Apellido+Nombre FechaInicial Dias FechaReal
Ruiz Clara 1982/07/12 112 1982/11/01
Perez Pedro 2001/01/28 2001/01/28

La vista que estoy armando la tengo de la siguiente forma:

CREATE VIEW CALCFECHA
AS
SELECT EMP.EMPLE,
SUBSTRING(RTRIM(EMP.APELLIDO)+' '+
RTRIM(EMP.NOMBRE),1,35) AS NOMEMP,
EMP.F_INICIAL,
CONVERT(DECIMAL(10,2),dbo.DIAS (EMP.EMPLE)) AS DIAS1,
DATEADD(dd,dbo.DIAS(EMP.EMPLE),F_INICIAL) AS F_REAL
FROM EMP

Al ejecutar la vista, me muestra lo siguiente:
Apellido+Nombre FechaInicial Dias FechaReal
Ruiz Clara 1982/07/12 112 1982/11/01
Perez Pedro 2001/01/28 0

Y lo que requiero es que si Dias es 0, me deje en FechaReal, la
FechaInicial, así como lo hace cuando tengo un valor en Dias.

Gracias,
Mayo


Respuesta Responder a este mensaje
#2 mayowr
03/05/2006 - 21:02 | Informe spam
Buenas Tardes Alejandro:

Gracias por tu ayuda.

Te cuento que hice la prueba con lo que me enviaste de dos formas:
1. SELECT EMP.EMPLE ,
SUBSTRING(RTRIM(EMP.APELLIDO)+' '+
RTRIM(EMP.NOMBRE),1,35) AS NOMEMP,
EMP.F_INICIAL
CASE WHEN dbo.DIAS(EMP.EMPLE) = 0 THEN
F_REAL
ELSE
DATEADD(dd,dbo.DIAS(EMP.EMPLE),F_INICIAL) END AS
F_REAL
FROM EMP
Si lo ejecuto así me dice:
[Microsoft][ODBC SQL Server Driver][SQL Server]El nombre de columna
'F_REAL' no es válido.

2. SELECT EMP.EMPLE ,
SUBSTRING(RTRIM(EMP.APELLIDO)+' '+
RTRIM(EMP.NOMBRE),1,35) AS NOMEMP,
EMP.F_INICIAL
CASE WHEN dbo.DIAS(EMP.EMPLE) = 0 THEN
F_INICIAL
ELSE
DATEADD(dd,dbo.DIAS(EMP.EMPLE),F_INICIAL) END AS
F_REAL
FROM EMP

Si lo ejecuto así me deja en blanco F_REAL, es decir igual a como si
no tuviea el CASE. Y la idea es que si dbo.DIAS(EMP.EMPLE) = 0, me
mueva F_INICIAL a F_REAL

Saludos,
Mayo
Respuesta Responder a este mensaje
#3 Alejandro Mesa
03/05/2006 - 21:30 | Informe spam
,

CASE WHEN dbo.DIAS(EMP.EMPLE) = 0 THEN
F_REAL
ELSE
DATEADD(dd,dbo.DIAS(EMP.EMPLE),F_INICIAL) END AS
F_REAL



Debes usar el nombre de la columna y no el alias que le asignas.

CASE WHEN dbo.DIAS(EMP.EMPLE) = 0 THEN <aqui pon el nombre de la columna>
ELSE DATEADD(dd,dbo.DIAS(EMP.EMPLE),F_INICIAL) END AS F_REAL


AMB

"" wrote:

Buenas Tardes Alejandro:

Gracias por tu ayuda.

Te cuento que hice la prueba con lo que me enviaste de dos formas:
1. SELECT EMP.EMPLE ,
SUBSTRING(RTRIM(EMP.APELLIDO)+' '+
RTRIM(EMP.NOMBRE),1,35) AS NOMEMP,
EMP.F_INICIAL
CASE WHEN dbo.DIAS(EMP.EMPLE) = 0 THEN
F_REAL
ELSE
DATEADD(dd,dbo.DIAS(EMP.EMPLE),F_INICIAL) END AS
F_REAL
FROM EMP
Si lo ejecuto así me dice:
[Microsoft][ODBC SQL Server Driver][SQL Server]El nombre de columna
'F_REAL' no es válido.

2. SELECT EMP.EMPLE ,
SUBSTRING(RTRIM(EMP.APELLIDO)+' '+
RTRIM(EMP.NOMBRE),1,35) AS NOMEMP,
EMP.F_INICIAL
CASE WHEN dbo.DIAS(EMP.EMPLE) = 0 THEN
F_INICIAL
ELSE
DATEADD(dd,dbo.DIAS(EMP.EMPLE),F_INICIAL) END AS
F_REAL
FROM EMP

Si lo ejecuto así me deja en blanco F_REAL, es decir igual a como si
no tuviea el CASE. Y la idea es que si dbo.DIAS(EMP.EMPLE) = 0, me
mueva F_INICIAL a F_REAL

Saludos,
Mayo


Respuesta Responder a este mensaje
#4 mayowr
03/05/2006 - 21:41 | Informe spam
Hola Alejandro.

Las columnas se llaman igual que los alias cuando hago el SELECT, no se
como hacer para colocar los titulos
de las columnas diferentes a los alias.

Los nombres de las columnas que tengo son:

EMPLE NOMEMP F_INICIAL DIAS
F_REAL
-

Nuevamente gracias,
Mayo.
Respuesta Responder a este mensaje
#5 Alejandro Mesa
03/05/2006 - 21:53 | Informe spam
SELECT EMP.EMPLE ,
SUBSTRING(RTRIM(EMP.APELLIDO)+' '+
RTRIM(EMP.NOMBRE),1,35) AS NOMEMP,
EMP.F_INICIAL
CASE WHEN dbo.DIAS(EMP.EMPLE) = 0 THEN
EMP.F_INICIAL
ELSE
DATEADD(dd,dbo.DIAS(EMP.EMPLE),F_INICIAL) END AS
F_REAL
FROM EMP
go


AMB




"" wrote:

Hola Alejandro.

Las columnas se llaman igual que los alias cuando hago el SELECT, no se
como hacer para colocar los titulos
de las columnas diferentes a los alias.

Los nombres de las columnas que tengo son:

EMPLE NOMEMP F_INICIAL DIAS
F_REAL
-

Nuevamente gracias,
Mayo.


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida