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

Preguntas similare

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
Respuesta Responder a este mensaje
#2 Jorge Díaz
07/05/2007 - 15:58 | Informe spam
Hola Javier, gracias por responder, el problema que se me presentaría que
este campo está configurado para que no acepte valores nulos.

Jorge Díaz


"Javier Loria" escribió en el mensaje
news:
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



Respuesta Responder a este mensaje
#3 DNC
07/05/2007 - 19:26 | Informe spam
fijate si te sirve


declare @cIdEmpleado int
set @cIdEmpleado = null

create table #hs
(idempleado int not null)

insert into #hs values (1)
insert into #hs values (2)
insert into #hs values (3)
insert into #hs values (4)
insert into #hs values (5)
insert into #hs values (6)
insert into #hs values (7)
insert into #hs values (8)

select idempleado from #hs
where #hs.idempleado = isnull(@cIdEmpleado,#hs.idempleado)
go

On 7 mayo, 10:58, "Jorge Díaz" wrote:
Hola Javier, gracias por responder, el problema que se me presentaría que
este campo está configurado para que no acepte valores nulos.

Jorge Díaz

"Javier Loria" escribió en el mensajenews:



> 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- Ocultar texto de la cita -

- Mostrar texto de la cita -
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida