Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-03-2013
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
Funciones que no tolera firebird 2.5

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
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
funciones php para firebird novato_erick PHP 13 08-03-2012 17:35:24
funciones de firebird micayael Firebird e Interbase 6 28-05-2011 22:22:25
¿Funciones estadísticas para FireBird 2.0? Angel Fernández Firebird e Interbase 12 16-03-2008 04:25:49
Existen funciones de usuario en firebird con plsql ASAPLTDA Firebird e Interbase 1 05-10-2006 03:06:31
UDF funciones / Functions firebird ASAPLTDA Firebird e Interbase 3 01-04-2005 17:38:26


La franja horaria es GMT +2. Ahora son las 20:23:01.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi