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 .
Avalados por :
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
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 .
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
Muito obrigado a todos!
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
contacto@primeinstitute.com
(+51) 1641 9379
(+57) 1489 6964
© 2024 Copyright. Todos los derechos reservados.
Desarrollado por Prime Institute