Problema para montar Select

12/12/2015

0

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

Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar