Problema para montar Select

Oracle

Firebird

12/12/2015

Estou com um problema para gerar uma consulta, preciso fazer uma consulta que mostrar a data e hora que a pessoa entrou e a data e hora que a pessoa saiu em uma mesma linha para fazer o calculo de quanto tempo a pessoa ficou dentro do setor.

essa é a tabela
CREATE TABLE ACESSO (
    COD_ACESSO        INTEGER NOT NULL,
    COD_DISPOSITIVO   INTEGER NOT NULL,
    NUM_SETOR_ACESSO  INTEGER NOT NULL,
    DAT_ACESSO        TIMESTAMP NOT NULL,
    COD_USER          INTEGER NOT NULL,
    COD_ID_CRACHA     INTEGER NOT NULL,
    IND_TIPO_ACESSO   VARCHAR(1) NOT NULL,
    IND_TIPO_USER     VARCHAR(1) NOT NULL
);


esse é o select que consegui até agora
SELECT DISTINCT ENTRADA,
       CASE WHEN ind_tipo_acesso = 'S' THEN DAT_ACESSO ELSE NULL END AS SAIDA,
       ACE1.NUM_SETOR_ACESSO,
       ACE1.COD_USER,
       ACE1.IND_TIPO_USER
  FROM ACESSO ACE1,
 (SELECT CASE WHEN ind_tipo_acesso = 'E' THEN DAT_ACESSO ELSE NULL END AS ENTRADA,
         COD_ACESSO,
         NUM_SETOR_ACESSO,
         COD_USER,
         IND_TIPO_USER
    FROM ACESSO ACE2
   WHERE ACE2.ind_tipo_acesso = 'E'
   or (ACE2.ind_tipo_acesso = 'S') ) AS AUX1
 WHERE ACE1.cod_acesso <> AUX1.COD_ACESSO
   AND ACE1.NUM_SETOR_ACESSO = AUX1.NUM_SETOR_ACESSO
   AND ACE1.COD_USER = AUX1.COD_USER
   AND ACE1.IND_TIPO_USER = AUX1.IND_TIPO_USER
   AND (ENTRADA IS NOT NULL AND ACE1.dat_acesso IS NOT NULL)

Registros
INSERT INTO ACESSO (COD_ACESSO, COD_DISPOSITIVO, NUM_SETOR_ACESSO, DAT_ACESSO, COD_USER, COD_ID_CRACHA, IND_TIPO_ACESSO, IND_TIPO_USER) VALUES (1, 1, 1, '12-DEC-2015 00:00:00', 1, 1, 'E', 'V');
INSERT INTO ACESSO (COD_ACESSO, COD_DISPOSITIVO, NUM_SETOR_ACESSO, DAT_ACESSO, COD_USER, COD_ID_CRACHA, IND_TIPO_ACESSO, IND_TIPO_USER) VALUES (2, 1, 1, '12-DEC-2015 00:01:00', 1, 1, 'E', 'V');
INSERT INTO ACESSO (COD_ACESSO, COD_DISPOSITIVO, NUM_SETOR_ACESSO, DAT_ACESSO, COD_USER, COD_ID_CRACHA, IND_TIPO_ACESSO, IND_TIPO_USER) VALUES (3, 1, 1, '12-DEC-2015 00:02:00', 1, 1, 'S', 'V');
INSERT INTO ACESSO (COD_ACESSO, COD_DISPOSITIVO, NUM_SETOR_ACESSO, DAT_ACESSO, COD_USER, COD_ID_CRACHA, IND_TIPO_ACESSO, IND_TIPO_USER) VALUES (4, 1, 1, '12-DEC-2015 00:03:00', 1, 1, 'E', 'V');
INSERT INTO ACESSO (COD_ACESSO, COD_DISPOSITIVO, NUM_SETOR_ACESSO, DAT_ACESSO, COD_USER, COD_ID_CRACHA, IND_TIPO_ACESSO, IND_TIPO_USER) VALUES (5, 1, 1, '12-DEC-2015 00:04:00', 1, 1, 'S', 'V');


Desde já agradeço.
Tiago Soares

Tiago Soares

Curtidas 0
POSTAR