Consulta sobre SELECT

13/12/2007 - 16:36 por Cristian Meneses | Informe spam
Buenas tardes
Tengo la siguiente consulta sacada de este mismo foro para luego sacar
la diferencia entre Entradas y Salidas.

select
t1.IDLegajo,
convert(varchar(8),t1.Fecha,114) as 'Entrada',
(
select convert(varchar(8),ISNULL(max(Fecha), '99991231
23:59:59.998') ,114)
from #AUXFichadas t2
where t2.idlegajo = t1.idlegajo and
t2.Ingreso = 0 and
t2.fecha >= t1.Fecha and
t2.fecha <= (
select isnull(min(fecha),
'99991231 23:59:59.998')
from #AUXFichadas
where idlegajo = t2.idlegajo and
Ingreso = 1 and
Fecha > t1.Fecha
)
) as 'Salida'
FROM #AUXFichadas t1 WHERE t1.Ingreso=1

La estructura de #AUXFichadas:
IDLegajo, int
Fecha, smalldatetime
Ingreso, bit (si es 1 es Entrada sino Salida)

El problema es que a veces tengo que la primer fichada del dia es
Salida y no me la muestra en la consulta porque comienza desde la
primer entrada en adelante. La idea es que en este caso, muestre en
Entrada el valor 0:00:01 y salida el valor de la fichada.
Gracias de antemano, saludos


Cristian Meneses
 

Leer las respuestas

#1 Carlos M. Calvelo
13/12/2007 - 20:17 | Informe spam
Hola Cristian,

On 13 dec, 16:36, Cristian Meneses wrote:
Buenas tardes
Tengo la siguiente consulta sacada de este mismo foro para luego sacar
la diferencia entre Entradas y Salidas.

select
t1.IDLegajo,
convert(varchar(8),t1.Fecha,114) as 'Entrada',
(
select convert(varchar(8),ISNULL(max(Fecha), '99991231
23:59:59.998') ,114)
from #AUXFichadas t2
where t2.idlegajo = t1.idlegajo and
t2.Ingreso = 0 and
t2.fecha >= t1.Fecha and
t2.fecha <= (
select isnull(min(fecha),
'99991231 23:59:59.998')
from #AUXFichadas
where idlegajo = t2.idlegajo and
Ingreso = 1 and
Fecha > t1.Fecha
)
) as 'Salida'
FROM #AUXFichadas t1 WHERE t1.Ingreso=1

La estructura de #AUXFichadas:
IDLegajo, int
Fecha, smalldatetime
Ingreso, bit (si es 1 es Entrada sino Salida)

El problema es que a veces tengo que la primer fichada del dia es
Salida y no me la muestra en la consulta porque comienza desde la
primer entrada en adelante. La idea es que en este caso, muestre en
Entrada el valor 0:00:01 y salida el valor de la fichada.
Gracias de antemano, saludos




Reconozco la consulta; la he puesto yo para ayudar con otro problema.

La consulta selecciona todas las entradas y busca para cada entrada
la salida correspondiente. La consulta, digámoslo así, 'no razona'
en periodos de un día. Si el primer registro del día es una salida,
la entrada correspondiente tendría que estar en el dia anterior.
La consulta también hace los siguiente: si tenemos una entrada y
después varias salidas sin sus correspondientes entradas, la
consulta devuelve la última. O sea la mayor de todas las salidas
anteriores a la próxima entrada.

Por lo que dices entiendo que el primer registro de un día
determinado tiene que ser una entrada y el último registro del
día una salida.
Es asi?

Y si durante ese día hay varias entradas sin sus correspondientes
salidas? O varias salidas sin sus correspondientes entradas?

Y si para un día determinado ya existe una entrada
a las 11:59:59 horas?

Y si para un día determinado ya existe una salida
a las 00:00:00 horas?

Una posibilidad es que en tu tabla introduzcas un registro de
entrada a las 00:00:00 horas para todos los días que empiezan
con una salida y un registro de salida a a als 23:59:59,999 horas
para todos los días que terminan con una entrada.

Ya ves... me gustaría ayudarte pero todo son preguntas.

Saludos,
Carlos

Preguntas similares