繁体   English   中英

如何在Oracle SQL中修复嵌套的CASE语法错误“无效的参数数量”

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM