Consulta SQL Server

07/05/2007 - 02:35 por Jorge Diaz | Informe spam
Buenos días, tengo esta consulta :

alter function Rlj_fnTraerHorarios(@cidEmpleado varchar(10),@fDesde
char(8),@fHasta char(8))
returns table as
return (
SELECT TOP 100 PERCENT hs.idempleado, hs.codsuc, hs.fecha,
hs.hora_entrada, finger.hora_entrada AS hora_entrada_real,
hs.hora_rec_salida,
finger.hora_rec_salida AS hora_rec_salida_real,
hs.hora_rec_entrada, finger.hora_rec_entrada AS hora_rec_entrada_real,
hs.hora_salida,
finger.hora_salida AS hora_salida_real,
aus.descripcion, hs.ndia, hs.idsemana, hs.observacion, dias.descripcion AS
nameday
FROM dbo.Rlj_Horario_Semanal hs RIGHT OUTER JOIN
dbo.Rlj_Dias_Semana dias ON hs.ndia = dias.ndia LEFT
OUTER JOIN
dbo.Rlj_DB_fingertec finger ON hs.fecha = finger.fecha
AND hs.idempleado = finger.idempleado LEFT OUTER JOIN
dbo.Rlj_Tipo_Ausencias aus ON hs.idausencia =
aus.idausencia
WHERE (hs.idempleado = @cIdEmpleado) AND (hs.fecha BETWEEN
CONVERT(DATETIME, @fDesde, 102) AND CONVERT(dateTime, @fHasta, 102))
ORDER BY hs.fecha
)

le mando el parámetro cIdEmpleado y me muestra los datos de dicho empleado,
pero necesito saber si ha esta misma consulta puedo generar que al no
mandarle el parámetro empleado o enviarselo en blanco me genere todo el
listado de los empleados.

Me explico?

gracias

Jorge Díaz
 

Leer las respuestas

#1 Javier Loria
07/05/2007 - 02:52 | Informe spam
Hola Jorge:
Podrias enviarle un valor nulo como empleado.
Sin tomar cuenta problemas de desempeño, podrias tratas con:
Buenos días, tengo esta consulta :
=alter function Rlj_fnTraerHorarios(@cidEmpleado varchar(10),@fDesde
char(8),@fHasta char(8))
returns table as
return (
SELECT TOP 100 PERCENT hs.idempleado, hs.codsuc, hs.fecha,
hs.hora_entrada, finger.hora_entrada AS hora_entrada_real,
hs.hora_rec_salida,
finger.hora_rec_salida AS hora_rec_salida_real,
hs.hora_rec_entrada, finger.hora_rec_entrada AS hora_rec_entrada_real,
hs.hora_salida,
finger.hora_salida AS hora_salida_real,
aus.descripcion, hs.ndia, hs.idsemana, hs.observacion, dias.descripcion AS
nameday
FROM dbo.Rlj_Horario_Semanal hs RIGHT OUTER JOIN
dbo.Rlj_Dias_Semana dias ON hs.ndia = dias.ndia LEFT
OUTER JOIN
dbo.Rlj_DB_fingertec finger ON hs.fecha = finger.fecha
AND hs.idempleado = finger.idempleado LEFT OUTER JOIN
dbo.Rlj_Tipo_Ausencias aus ON hs.idausencia aus.idausencia
WHERE (hs.idempleado = @cIdEmpleado OR @cIdEmpleado IS NULL)
AND (hs.fecha BETWEEN CONVERT(DATETIME, @fDesde, 102)
AND CONVERT(dateTime, @fHasta, 102))
ORDER BY hs.fecha
)
= Saludos,


Javier Loria
Costa Rica (MVP)
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

"Jorge Diaz" wrote in message
news:Ot9Qo%
Buenos días, tengo esta consulta :

alter function Rlj_fnTraerHorarios(@cidEmpleado varchar(10),@fDesde
char(8),@fHasta char(8))
returns table as
return (
SELECT TOP 100 PERCENT hs.idempleado, hs.codsuc, hs.fecha,
hs.hora_entrada, finger.hora_entrada AS hora_entrada_real,
hs.hora_rec_salida,
finger.hora_rec_salida AS hora_rec_salida_real,
hs.hora_rec_entrada, finger.hora_rec_entrada AS hora_rec_entrada_real,
hs.hora_salida,
finger.hora_salida AS hora_salida_real,
aus.descripcion, hs.ndia, hs.idsemana, hs.observacion, dias.descripcion AS
nameday
FROM dbo.Rlj_Horario_Semanal hs RIGHT OUTER JOIN
dbo.Rlj_Dias_Semana dias ON hs.ndia = dias.ndia LEFT
OUTER JOIN
dbo.Rlj_DB_fingertec finger ON hs.fecha =
finger.fecha AND hs.idempleado = finger.idempleado LEFT OUTER JOIN
dbo.Rlj_Tipo_Ausencias aus ON hs.idausencia =
aus.idausencia
WHERE (hs.idempleado = @cIdEmpleado) AND (hs.fecha BETWEEN
CONVERT(DATETIME, @fDesde, 102) AND CONVERT(dateTime, @fHasta, 102))
ORDER BY hs.fecha
)

le mando el parámetro cIdEmpleado y me muestra los datos de dicho
empleado, pero necesito saber si ha esta misma consulta puedo generar que
al no mandarle el parámetro empleado o enviarselo en blanco me genere todo
el listado de los empleados.

Me explico?

gracias

Jorge Díaz

Preguntas similares