Avalados por :

Solución para usar IFNULL dentro de una declaración CASE en SQL

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

Estimado equipo,

Estoy intentando usar 'IFNULL' dentro de una declaración 'Case' y no está funcionando.

SELECT CASE when IFNULL(T2."U_XIS_VoucherValidity",'')='' THEN T3."U_value" ELSE T2."U_XIS_VoucherValidity" END AS Validez
FROM ORDR T0 LEFT JOIN RDR1 T1 ON T0."DocEntry"=T1."DocEntry"
LEFT JOIN OITM T2 ON T1."ItemCode"=T2."ItemCode
LEFT JOIN (SELECT X1."U_value" ,X1."U_ParamName"
FROM "@XIS_VOUCHERPARAMS" X0

LEFT JOIN "@XIS_VOUCHERPARAMSL" X1 ON X0."DocEntry"=X1."DocEntry") T3 ON T3."U_ParamName"='SalesPart'

WHERE T1."ItemCode"='001-124' y T0."DocEntry" = 268

Creo que hay 2 problemas:

1. Creo que hay algo mal en la forma en que lo escribí.

2. Por alguna razón, la declaración IFNULL no reconoce el espacio (' ') - Si hago lo mismo en SQL con isnull, funciona..

Por favor ayuda,

Gracias,

O

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

La pregunta es ¿por qué necesitas el CASE aquí en absoluto? ¿Qué estás tratando de lograr es obtener el primer valor no nulo, ¿verdad? Con esos dos argumentos, simplemente puedes usar la función IFNULL o utilizar la función COALESCE .

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

¿Creo que eso resuelve tu problema? Si esta respuesta ha solucionado tu problema, acepta la respuesta y cierra el hilo. Esto ayudará a otros que buscan las mismas soluciones.

Gracias,

Venkat

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

¡Muchas gracias a todos!

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

Si deseas utilizar una declaración CASE, entonces úsala de la siguiente manera:

    
      SELECT CASE WHEN T2."U_XIS_VoucherValidity IS NULL THEN T3."U_value" ELSE T2."U_XIS_VoucherValidity" END AS Validity
      FROM ORDR T0 
      LEFT JOIN RDR1 T1 ON T0."DocEntry"=T1."DocEntry"
      LEFT JOIN OITM T2 ON T1."ItemCode"=T2."ItemCode"
      LEFT JOIN (SELECT X1."U_value" ,X1."U_ParamName"
      FROM "@XIS_VOUCHERPARAMS" X0
      LEFT JOIN "@XIS_VOUCHERPARAMSL" X1 ON X0."DocEntry"=X1."DocEntry") T3 ON T3."U_ParamName"='SalesPart'
      WHERE T1."ItemCode"='001-124' and T0."DocEntry" = 268
      
    
  

O como sugirió el Sr. Florian, puedes seguir este ejemplo.

Saludos,

Venkat

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?