需要有条件的规则:
IF
A then currency = ABC
B then currency = ABD
C then currency = ABE
NULL = Returns data from A, B and C but it's currency is ABC为了实现这个逻辑,我尝试使用3条单独的CASE语句,但这似乎行不通。感谢你的任何帮助
我现在拥有的是:
(尝试了几个变体)
CASE
WHEN '&SITE' IS 'A' THEN
COJ.CURRENCY_CODE IS 'ABC'
END A,
CASE
WHEN '&SITE' IS 'B' THEN
COJ.CURRENCY_CODE IS 'ABD'
END B,
CASE
WHEN '&SITE' IS NULL 'C' THEN
COJ.CURRENCY_CODE IS 'ABE'
END C,发布于 2018-11-01 14:47:03
如果使用解码函数语句,则只有B和C生成不同的值然后默认:
decode(x, 'B', 'ABD', 'C', 'ABE','ABC')发布于 2018-11-01 15:33:44
您应该坚持使用case表达式:
(CASE WHEN '&SITE' = 'A' THEN 'ABC'
WHEN '&SITE' = 'B' THEN 'ABD'
WHEN '&SITE' = 'C' THEN 'ABE'
ELSE 'ABC'
END) as currency_code或者:
(CASE '&SITE' WHEN 'A' THEN 'ABC'
WHEN 'B' THEN 'ABD'
WHEN 'C' THEN 'ABE'
ELSE 'ABC'
END) as currency_codeCASE是标准的SQL,在所有数据库中都可用,大多数人认为它更清晰。DECODE()在使用标准函数之前对Oracle代码进行了定制。CASE在甲骨文中已经存在了20年。
https://stackoverflow.com/questions/53103378
复制相似问题