SELECT CASE
WHEN STATUS_CD_DESC IN ('CLOSED', 'CANCELLED', 'N/A') THEN
'N'
ELSE
CASE
WHEN ATD_ACPT_DT IS NOT NULL THEN
'N'
ELSE
CASE
WHEN (REV_REC_TERMS_KEY IN ('SHIPMENT', 'DELIVERY')) AND
((FSET_NEOVT <> 0) OR (REV_REC_STEP_DESC IS NOT NULL)) THEN
'N'
ELSE
'Y'
END END END AS BACKLG_FLG
FROM ...
WHERE ...
请问高手,最下面一行有3个END,正确吗,我觉得一个END就够了
SELECT CASE
WHEN STATUS_CD_DESC IN ('CLOSED', 'CANCELLED', 'N/A') THEN
'N'
WHEN ATD_ACPT_DT IS NOT NULL THEN
'N'
WHEN (REV_REC_TERMS_KEY IN ('SHIPMENT', 'DELIVERY')) AND
((FSET_NEOVT <> 0) OR (REV_REC_STEP_DESC IS NOT NULL)) THEN
'N'
ELSE
'Y'
END AS BACKLG_FLG
FROM ...
WHERE ...
测试 SQL:
SELECT CASE
WHEN 'CLOSED' IN ('CLOSED', 'CANCELLED', 'N/A') THEN
'N'
ELSE
CASE
WHEN 'sdsd' IS NOT NULL THEN
'N'
ELSE
CASE
WHEN ('SHIPMENT' IN ('SHIPMENT', 'DELIVERY')) AND
((3 <> 0) OR ('SHIPMENT' IS NOT NULL)) THEN
'N'
ELSE
'Y'
END END END AS BACKLG_FLG
FROM dual
WHEN STATUS_CD_DESC IN ('CLOSED', 'CANCELLED', 'N/A') THEN 'N'
ELSE
CASE
WHEN ATD_ACPT_DT IS NOT NULL THEN 'N'
ELSE
CASE
WHEN (REV_REC_TERMS_KEY IN ('SHIPMENT', 'DELIVERY')) AND
((FSET_NEOVT <> 0) OR (REV_REC_STEP_DESC IS NOT NULL)) THEN 'N'
ELSE
'Y'
END
END
END AS BACKLG_FLG
FROM ...
WHERE ...
WHEN 'CLOSED' IN ('CLOSED', 'CANCELLED', 'N/A') THEN
'N'
ELSE
CASE
WHEN 'sdsd' IS NOT NULL THEN
'N'
ELSE
CASE
WHEN ('SHIPMENT' IN ('SHIPMENT', 'DELIVERY')) AND
((3 <> 0) OR ('SHIPMENT' IS NOT NULL)) THEN
'N'
ELSE
'Y'
END END END AS BACKLG_FLG
FROM DUAL