¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Como encontrar o total de registros para um distribuidor xxx com a categoria de chamada C1 e diferença de tempo menor que 24 horas

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 4 Vistas
0
Cargando...

Olá Especialistas,

Eu tenho um requisito, onde preciso encontrar o total de registros que correspondem a algumas condições.

Tenho duas tabelas 1) CALL_REGISTER 2) CALL_RESOLVED.

Quando um serviço é solicitado em uma chamada, fazemos uma entrada com call_no como chave na tabela CALL_REGISTER.

Uma vez que esse serviço é resolvido, também fazemos uma entrada com call_no como chave na tabela CALL_RESOLVED.

Agora tenho um requisito em que preciso obter o total de registros para um distribuidor xxx, com a categoria de chamada sendo CATEG como C1

e tendo uma diferença de tempo de menos de 24 horas.

A diferença de tempo é considerada com base no status.

Quando o status é Resolvido, então considere a diferença de tempo em horas entre a data e hora de criação da chamada e a data e hora de resolução da chamada. Onde a data de resolução da chamada é capturada em JOB_DONE_DATE na tabela CALL_RESOLVED.

Quando o status não está resolvido, considere a diferença de tempo em horas entre a data e hora de criação da chamada e o timestamp atual.

Abaixo está minha consulta, mas estou recebendo um erro como mostrado abaixo após o bloco de código.

SELECT COUNT(*)OVER()  AS TOTAL_C1_COUNT, A.STATUS FROM CALL_REGISTER  A LEFT JOIN CALL_RESOLVED  B ON A.CALL_NO = B.CALL_NO
    WHERE A.DEALER_CODE IN ('XXX') AND A.CATEG IN ('C1') AND 
    CASE  A.STATUS 
    WHEN 'RESOLVED'
    THEN 
    SECONDS_BETWEEN (TO_TIMESTAMP(CONCAT(CONCAT(A.CALL_CREATION_DT,' '),A.CALL_CREATION_TIME)),TO_TIMESTAMP(CONCAT(CONCAT(B.JOB_DONE_DATE,' '),B.JOB_DONE_TIME)))/(24*3600) BETWEEN 0 AND 24  
    ELSE 
    (SECONDS_BETWEEN (TO_TIMESTAMP(CONCAT(CONCAT ( A.CALL_CREATION_DT,' '),A.CALL_CREATION_TIME ) ),CURRENT_TIMESTAMP)/(24*3600)) BETWEEN 0 AND 24
    END
    
Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Olá

Teste esta consulta e atualize qual é o resultado

SELECT COUNT(*) AS TOTAL_C1_COUNT, A.STATUS ,
       CASE A.STATUS = 'RESOLVED' THEN 
                        SECONDS_BETWEEN (TO_TIMESTAMP(CONCAT(CONCAT(A.CALL_CREATION_DT,' '),
                                         A.CALL_CREATION_TIME)),
                                         TO_TIMESTAMP(CONCAT(CONCAT(B.JOB_DONE_DATE,' '),
                                         B.JOB_DONE_TIME)))/(24*3600)
                        ELSE 0 END AS RESOLVED_TIME,
       CASE A.STATUS != 'RESOLVED' THEN 
                        (SECONDS_BETWEEN (TO_TIMESTAMP(CONCAT(CONCAT ( A.CALL_CREATION_DT,' '),
                                          A.CALL_CREATION_TIME ) ),
                                          CURRENT_TIMESTAMP)/(24*3600))
                        ELSE 0 END AS WORKING_TIME
FROM CALL_REGISTER  A LEFT JOIN CALL_RESOLVED  B ON A.CALL_NO = B.CALL_NO
WHERE A.DEALER_CODE IN ('XXX') AND A.CATEG IN ('C1');
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Por favor, ajude-me com uma consulta como

SELECT "DOC_ENTRY" , "DOC_TYPE", "IRN_NO", "ACK_NO" , "ACK_DATE", "QR_CODE_IMAGE"

de "@UTL_E_INV_TEST"

ONDE "DOC_ENTRY"= "DOC_TYPE"

Quero fazer DocEntry coincidir com DocType

Ajude-me com a condição WHERE onde coincida com DOCENTRY E DOCTYPE.

Por exemplo,

Fatura de venda DocEntry 111

Nota de crédito de venda DocEntry 110

Como fazer isso coincidir? Por favor, ajude-me com um Join ou uma condição WHERE.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá artemt

Obrigado, está funcionando perfeitamente!

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Desculpe, não entendi a ideia no início.

A resposta é colocar entre case , case apenas retorna o valor dependendo da condição, a comparação não faz parte do que o case faz

 SELECT COUNT(*)OVER()  AS TOTAL_C1_COUNT, A.STATUS FROM CALL_REGISTER  A LEFT JOIN CALL_RESOLVED  B ON A.CALL_NO = B.CALL_NO
WHERE A.DEALER_CODE IN ('XXX') AND A.CATEG IN ('C1') AND 
CASE  A.STATUS 
WHEN 'RESOLVED'
THEN 
SEGUNDOS_ENTRE (PARA_TIMESTAMP(CONCAT(CONCAT(A.CALL_CREATION_DT,' '),A.CALL_CREATION_TIME)),PARA_TIMESTAMP(CONCAT(CONCAT(B.JOB_DONE_DATE,' '),B.JOB_DONE_TIME)))/(24*3600) 
ELSE 
(SEGUNDOS_ENTRE (PARA_TIMESTAMP(CONCAT(CONCAT ( A.CALL_CREATION_DT,' '),A.CALL_CREATION_TIME ) ),TEMPO_ATUAL)/(24*3600))
END
 ENTRE 0 E 24 
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?