Hola chicos como están nuevamente?
tengo que obtener un resultado como este:
Cita:
id_depto---id_empleado----Fecha------HoraEntrada-----HoraSalida------HoraEntrada1---HoraSalida1
1-----------5-----------19/09/2012------08:31:00------12:38:00--------14:30:00------18:50:00
1-----------7-----------19/09/2012------08:19:00------12:34:00--------14:26:00------19:24:00
1-----------12----------19/09/2012------08:06:00------15:22:00 --------NULL-----------NULL
1-----------13----------19/09/2012------07:03:00------17:08:00 ------- NULL-----------NULL
|
La informacion se obtiene de las siguientes tablas:
Código SQL
[-]
CREATE TABLE TMARCACIONES (
ID_MARCAS INTEGER NOT NULL,
ID_EMPLEADOS INTEGER NOT NULL,
HORA TIMESTAMP DEFAULT 'NOW' NOT NULL);
ALTER TABLE TMARCACIONES ADD PRIMARY KEY (ID_MARCAS);
SET TERM ^ ;
CREATE TRIGGER BI_TMARCACIONES_ID_MARCAS FOR TMARCACIONES
ACTIVE BEFORE INSERT
POSITION 0
AS
BEGIN
IF (NEW.ID_MARCAS IS NULL) THEN
NEW.ID_MARCAS = GEN_ID(TMARCACIONES_ID_MARCAS_GEN, 1);
END^
ahora trato de hacerlo con la siguiente consulta:
Código SQL
[-]
WITH HORASEMPL AS
(
SELECT ID_EMPLEADOS, HORA, ROW_NUMBER() OVER (PARTITION BY ID_EMPLEADOS ORDER BY HORA) AS IDE
FROM TMARCACIONES WHERE CAST(HORA as Date) = Fecha
)
SELECT
he.IDEMPLEADO, CAST(he.HORAMARCA as Date) AS Fecha, CAST(he.HORAMARCA as time) As HoraEntrada, CAST(he.HORAMARCA as time) As HoraSalidaAlmuerzo
,CAST(he.HORAMARCA as time) As HoraEntradaAlmuerzo,CAST(he.HORAMARCA as time) As HoraSalida = CASE
WHEN CAST(HORA as TIME) = CAST(f.HORA as TIME) then NULL
WHEN CAST(HORA as TIME) = CAST(s.HORA as TIME) then NULL
ELSE CAST(HORA as TIME)
END
FROM HORASEMPL he
LEFT JOIN (SELECT id_empleados, MIN(HoraMarca) HoraMarca FROM HORASEMPL WHERE IDE > 1 GROUP BY IdEmpleado)as h ON h.id_empleados = he.id_empleados
LEFT JOIN (SELECT id_empleados, MIN(HoraMarca) HoraMarca FROM HORASEMPL WHERE IDE > 2 GROUP BY IdEmpleado) AS f ON f.id_empleados = he.id_empleados
LEFT JOIN (SELECT id_empleados, max(HoraMarca) HoraMarca FROM HORASEMPL WHERE IDE > 1 GROUP BY IdEmpleado) AS g ON g.id_empleados = he.id_empleados
ORDER BY he.IDEMPLEADO
alguna parte esta mal porque me manda lo siguiente:
Cita:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 3, column 46.
(.
|
no se a que se deba o si alguien conoce alguna forma de hacerlo mejor...
Saludos
novato_erick