Avalados por :

Solução para usar IFNULL dentro de uma declaração CASE em SQL

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

Caro equipe,

Estou tentando usar 'IFNULL' dentro de uma declaração 'Case' e não 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' e T0."DocEntry" = 268

Acredito que há 2 problemas:

1. Acho que há algo errado na forma como escrevi.

2. Por alguma razão, a declaração IFNULL não reconhece o espaço (' ') - Se fizer o mesmo no SQL com isnull, funciona..

Por favor, ajude,

Obrigado,

O

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

4 Respuestas

0
Cargando...

A pergunta é por que você precisa do CASE aqui de todo? O que você está tentando alcançar é obter o primeiro valor não nulo, certo? Com esses dois argumentos, você pode simplesmente usar a função IFNULL ou utilizar a função COALESCE .

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

Acredito que isso resolve o seu problema. Se esta resposta resolveu o seu problema, por favor, aceite-a e encerre o tópico. Isso ajudará outras pessoas que procuram as mesmas soluções.

Obrigado,

Venkat

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

Muito obrigado a todos!

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

Se deseja usar uma declaração CASE, faça da seguinte forma:

    
      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
      
    
  

Ou, como sugeriu o Sr. Florian, você pode seguir este exemplo.

Saudações,

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?