¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Cómo encontrar el recuento total de registros para un distribuidor xxx con la categoría de llamada C1 y diferencia de tiempo menor a 24 horas

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

Hi Experts,

Tengo un requisito, donde necesito encontrar el recuento total de registros que coinciden con algunas condiciones.

Tengo dos tablas 1) CALL_REGISTER 2) CALL_RESOLVED.

Cuando se realiza una solicitud de servicio en una llamada, hacemos una entrada con call_no como clave en la tabla CALL_REGISTER.

Una vez que se resuelve esa solicitud de servicio, también hacemos una entrada con call_no como clave en la tabla CALL_RESOLVED.

Ahora tengo un requisito en el que necesito obtener el recuento de registros para un distribuidor xxx, con la categoría de llamada es decir CATEG como C1

y teniendo una diferencia de tiempo de menos de 24 horas.

La diferencia de tiempo se considera en función del estado.

Cuando el estado es Resuelto, entonces considere la diferencia de tiempo en horas entre la fecha y hora de creación de la llamada y la fecha y hora de resolución de la llamada. Donde la fecha de resolución de la llamada se captura en JOB_DONE_DATE en la tabla CALL_RESOLVED.

Cuando el estado no está resuelto, considere la diferencia de tiempo en horas entre la fecha y hora de creación de la llamada y la marca de tiempo actual.

A continuación se muestra mi consulta, pero estoy recibiendo un error como se muestra a continuación después del bloque 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
    
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Hola

Prueba esta consulta y actualiza cuál es el 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, ayúdame con una consulta como

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

de "@UTL_E_INV_TEST"

DONDE "DOC_ENTRY"= "DOC_TYPE"

Quiero hacer coincidir DocEntry con DocType

Ayúdame con la condición WHERE donde coincida con DOCENTRY Y DOCTYPE.

Por ejemplo,

Factura de venta DocEntry 111

Nota de crédito de venta DocEntry 110

¿Cómo hacer coincidir esto? Por favor, ayúdame con un Join o una condición WHERE.

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

Hola artemt

¡Gracias, está funcionando perfectamente!

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

Lo siento, no entendí la idea al principio.

La respuesta es poner entre case , case solo devuelve el valor dependiendo de la condición, la comparación no es parte de lo que hace case

 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) 
ELSE 
(SECONDS_BETWEEN (TO_TIMESTAMP(CONCAT(CONCAT ( A.CALL_CREATION_DT,' '),A.CALL_CREATION_TIME ) ),CURRENT_TIMESTAMP)/(24*3600))
END
 BETWEEN 0 AND 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?