[英]How to fix Nested CASE Syntax Error “Invalid Number of Arguments” in Oracle SQL
我在Oracle中运行查询,并尝试创建由下面的嵌套CASE语句定义的新列。 我在突出显示的“ Else”语句上看到“ Invalid Number of Arguments”无效。
我看了很多遍,它似乎有正确数量的参数。 我在这里想念什么吗?
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
似乎您想要:
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
WHEN TRD_TYP = 'IRSWAP'
THEN CURR_NOTNL_CUR
WHEN TRD_TYP = 'EQSWAP'
THEN CURR_NOTNL_UNIT
WHEN TRD_TYP = 'FUTURE'
THEN
CASE
WHEN BUY/SELL = 'BUY'
THEN CURR_NOTNL_CUR / PRC
ELSE -CURR_NOTNL_CUR / PRC
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
您的代码针对外部CASE
表达式具有多个ELSE
子句,并且只能有一个。 前三个每个都有一个内部CASE
,它不需要在那里。 WHEN ... THEN
这些可以被“提升”为外在表达。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.