【发布时间】:2019-06-24 01:13:14
【问题描述】:
我在 Oracle 中运行查询并尝试创建一个由下面的嵌套 CASE 语句定义的新列。我在突出显示的“Else”语句中出现错误,说“参数数量无效”。
我看了很多遍,它似乎有正确数量的参数。我在这里错过了什么吗?
SELECT
CASE
WHEN TRD_TYP IN ('Swaption', 'IRG Floor', 'IRG Cap')
THEN
CASE
WHEN BUY_SELL = 'BUY'
THEN CURR_NOTNL_CUR
ELSE -CURR_NOTNL_CUR
END
ELSE
CASE
WHEN TRD_TYP = 'IRSWAP'
THEN CURR_NOTNL_CUR
END
**ELSE**
CASE
WHEN TRD_TYP = 'EQSWAP'
THEN CURR_NOTNL_UNIT
END
ELSE
CASE
WHEN TRD_TYP = 'FUTURE'
THEN
CASE
WHEN BUY/SELL = 'BUY'
THEN CURR_NOTNL_CUR / PRC
ELSE -CURR_NOTNL_CUR / PRC
END
END
ELSE
CASE
WHEN BUY_SELL = 'BUY'
THEN CURR_NOTNL_UNIT
ELSE -CURR_NOTNL_UNIT
END
END AS UNITS_OF_UNDERLYING
FROM ACTLANN.HDG_ASST_DTLS
【问题讨论】:
-
什么是
**ELSE**(假设它应该突出显示报告错误的位置)应该是ELSEof? -
是的,这是我得到错误的地方。但是,如果我删除该 ELSE 部分本身,则错误会转移到下一个 ELSE
-
是的——但他们应该做什么?你有外部的
CASE和一个WHEN和四个ELSEs,这是不对的。