SELECT
description_arab,
CTS_TRX_TYPE,
comp_code,
branch_code,
currency_code,
gl_code,
cif_sub_no,
cts_trs_no,
trans_date,
value_date,
fc_amount,
cv_amount,description,case when fc_amount is null then '0' else fc_amount end end as fc ,
case when CTS_TRX_TYPE is null then 'JV' else CTS_TRX_TYPE end end as TRX_TYPE,
CASE WHEN CURRENCY_CODE = 368 THEN 'IQD' ELSE CASE WHEN CURRENCY_CODE = 840 THEN 'USD' END END AS CURRENCY
FROM dof WHERE to_date(trans_date,'DD/MM/YYYY') between to_date('24/09/18,'DD/MM/YYYY') AND
TO_DATE('21/11/18' ,'DD/MM/YYYY') and currency_code IS NOT NULL
order by cts_trs_no
最佳答案
是的,您可以在表中的多个列上使用多个 case 语句。 但是从您的查询中我可以看到额外的 END 语句,因此只需将它们从您的查询中删除并更新最后一个 case 语句。 不确定这是否是您想要的 -
SELECT description_arab,
cts_trx_type,
comp_code,
branch_code,
currency_code,
gl_code,
cif_sub_no,
cts_trs_no,
trans_date,
value_date,
fc_amount,
cv_amount,
description,
CASE
WHEN fc_amount IS NULL THEN '0'
ELSE fc_amount
END AS fc ,
CASE
WHEN cts_trx_type IS NULL THEN 'JV'
ELSE cts_trx_type
END AS trx_type,
CASE
WHEN currency_code = 368 THEN 'IQD'
WHEN currency_code = 840 THEN 'USD'
ELSE 'INVALID CURRECY' -- added this to check other checks as well
END as currency
FROM dof
WHERE to_date(trans_date,'DD/MM/YYYY') BETWEEN to_date('24/09/18,'dd/mm/yyyy') AND TO_DATE('21/11/18' ,'dd/mm/yyyy') and currency_code IS NOT NULL order by cts_trs_no
关于mysql - sql如何使用不同列的多个案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53426163/