Sql Case嵌套Case语句
您好,我在向嵌套case语句添加另一组条件时遇到问题。我尝试了几种方式重新格式化语句,并将“END”放在不同的位置,但我似乎无法通过ORA-00909:无效参数数错误。 我想我只需要每个案例有一个结束,结束需要在其他结束之前结束。这不对吗?如果我把最后一个条件注释掉,它就可以正常工作了 根据下面的评论,我试图理顺我的代码并设置正确的else和end语句,但仍然得到相同的错误。基本上应该有5组条件Sql Case嵌套Case语句,sql,oracle,Sql,Oracle,您好,我在向嵌套case语句添加另一组条件时遇到问题。我尝试了几种方式重新格式化语句,并将“END”放在不同的位置,但我似乎无法通过ORA-00909:无效参数数错误。 我想我只需要每个案例有一个结束,结束需要在其他结束之前结束。这不对吗?如果我把最后一个条件注释掉,它就可以正常工作了 根据下面的评论,我试图理顺我的代码并设置正确的else和end语句,但仍然得到相同的错误。基本上应该有5组条件 CASE WHEN IND0.M_COM_FUT <>0 AND IN
CASE
WHEN IND0.M_COM_FUT <>0 AND IND0.M_COM_FUT = IND5.M_COM_IND
THEN
CASE WHEN IND5.M_COM_IND = CMIND5.M_REFERENCE
THEN
CASE WHEN CMIND5.M_PHYSICAL = PHYS5.M_REFERENCE
THEN PHYS5.M_LABEL
END
END
ELSE
CASE WHEN IND0.M_UNDRL = IND3.M_INDEX AND IND3.M_IND_LAB LIKE '%NBY%' AND IND3.M_COM_NBY_T = 2
THEN
CASE WHEN IND3.M_COM_FUT = IND6.M_COM_IND
THEN
CASE WHEN IND6.M_COM_IND = CMIND6.M_REFERENCE
THEN
CASE WHEN CMIND6.M_PHYSICAL = PHYS6.M_REFERENCE
THEN PHYS6.M_LABEL
END
END
END
END
ELSE
CASE WHEN IND0.M_UNDRL = IND3.M_INDEX
THEN
CASE WHEN IND3.M_COM_IND = CMIND3.M_REFERENCE
THEN
CASE WHEN CMIND3.M_PHYSICAL = PHYS3.M_REFERENCE
THEN PHYS3.M_LABEL
END
END
END
ELSE
CASE WHEN IND0.M_UNDRL = IND3.M_INDEX AND IND3.M_IND_LAB LIKE '%NBY%' AND IND3.M_COM_NBY_T = 0
THEN
CASE WHEN IND3.M_COM_FUT = FUT.M_REFERENCE
THEN
CASE WHEN FUT.M_QUOT_FWD= QUOT.M_REFERENCE
THEN
CASE WHEN QUOT.M_INDEX = IND0.M_INDEX
THEN PHYS0.M_LABEL
END
END
END
END
ELSE
CASE WHEN IND0.M_IND_LAB= IND0.M_IND_LAB
THEN PHYS0.M_LABEL
END
END AS PRODUCT,
案例
当IND0.M_COM_FUT 0和IND0.M_COM_FUT=IND5.M_COM_IND
然后
IND5.M\u COM\u IND=CMIND5.M\u参考时的情况
然后
CMIND5.M_物理=PHYS5.M_参考时的情况
然后是PHYS5.M_标签
结束
结束
其他的
当IND0.M_UNDRL=IND3.M_索引和IND3.M_IND_实验室如“%NBY%”和IND3.M_COM_NBY\u T=2时的情况
然后
IND3.M_COM_FUT=IND6.M_COM_IND时的情况
然后
IND6.M\u COM\u IND=CMIND6.M\u参考时的情况
然后
CMIND6.M_物理=PHYS6.M_参考时的情况
然后是PHYS6.M_标签
结束
结束
结束
结束
其他的
IND0.M_UNDRL=IND3.M_索引时的情况
然后
IND3.M_COM_IND=CMIND3.M_参考时的情况
然后
当CMIND3.M_物理=PHYS3.M_参考时的情况
然后是PHYS3.M_标签
结束
结束
结束
其他的
当IND0.M_UNDRL=IND3.M_索引和IND3.M_IND_实验室如“%NBY%”和IND3.M_COM_NBY=0时的情况
然后
IND3.M_COM_FUT=FUT.M_参考时的情况
然后
当FUT.M“u QUOT”FWD=QUOT.M”参考时的情况
然后
当QUOT.M_索引=IND0.M_索引时的情况
然后是PHYS0.M_标签
结束
结束
结束
结束
其他的
IND0.M_IND_LAB=IND0.M_IND_LAB时的情况
然后是PHYS0.M_标签
结束
最终产品,
如果您的代码格式更好,您应该会发现它有重复的else
,并且遗漏了一些end
CASE
WHEN IND0.M_COM_FUT <>0 AND IND0.M_COM_FUT = IND5.M_COM_IND
THEN
CASE WHEN IND5.M_COM_IND = CMIND5.M_REFERENCE
THEN
CASE WHEN CMIND5.M_PHYSICAL = PHYS5.M_REFERENCE
THEN PHYS5.M_LABEL
END
END
ELSE
CASE WHEN IND0.M_UNDRL = IND3.M_INDEX AND IND3.M_IND_LAB LIKE '%NBY%' AND IND3.M_COM_NBY_T = 2
THEN
CASE WHEN IND3.M_COM_FUT = IND6.M_COM_IND
THEN
CASE WHEN IND6.M_COM_IND = CMIND6.M_REFERENCE
THEN
CASE WHEN CMIND6.M_PHYSICAL = PHYS6.M_REFERENCE
THEN PHYS6.M_LABEL
END
END
END
ELSE
CASE WHEN IND0.M_UNDRL = IND3.M_INDEX
THEN
CASE WHEN IND3.M_COM_IND = CMIND3.M_REFERENCE
THEN
CASE WHEN CMIND3.M_PHYSICAL = PHYS3.M_REFERENCE
THEN PHYS3.M_LABEL
END
END
ELSE
CASE WHEN IND0.M_IND_LAB= IND0.M_IND_LAB
THEN PHYS0.M_LABEL
END
END
END
ELSE
CASE WHEN IND0.M_UNDRL = IND3.M_INDEX AND IND3.M_IND_LAB LIKE '%NBY%' AND IND3.M_COM_NBY_T = 0
THEN
CASE WHEN IND3.M_COM_FUT = FUT.M_REFERENCE
THEN
CASE WHEN FUT.M_QUOT_FWD= QUOT.M_REFERENCE
THEN
CASE WHEN QUOT.M_INDEX = IND0.M_INDEX
THEN PHYS0.M_LABEL
END
END
END
END
END AS PRODUCT,
案例
当IND0.M_COM_FUT 0和IND0.M_COM_FUT=IND5.M_COM_IND
然后
IND5.M\u COM\u IND=CMIND5.M\u参考时的情况
然后
CMIND5.M_物理=PHYS5.M_参考时的情况
然后是PHYS5.M_标签
结束
结束
其他的
当IND0.M_UNDRL=IND3.M_索引和IND3.M_IND_实验室如“%NBY%”和IND3.M_COM_NBY\u T=2时的情况
然后
IND3.M_COM_FUT=IND6.M_COM_IND时的情况
然后
IND6.M\u COM\u IND=CMIND6.M\u参考时的情况
然后
CMIND6.M_物理=PHYS6.M_参考时的情况
然后是PHYS6.M_标签
结束
结束
结束
其他的
IND0.M_UNDRL=IND3.M_索引时的情况
然后
IND3.M_COM_IND=CMIND3.M_参考时的情况
然后
当CMIND3.M_物理=PHYS3.M_参考时的情况
然后是PHYS3.M_标签
结束
结束
其他的
IND0.M_IND_LAB=IND0.M_IND_LAB时的情况
然后是PHYS0.M_标签
结束
结束
结束
其他的
当IND0.M_UNDRL=IND3.M_索引和IND3.M_IND_实验室如“%NBY%”和IND3.M_COM_NBY=0时的情况
然后
IND3.M_COM_FUT=FUT.M_参考时的情况
然后
当FUT.M“u QUOT”FWD=QUOT.M”参考时的情况
然后
当QUOT.M_索引=IND0.M_索引时的情况
然后是PHYS0.M_标签
结束
结束
结束
结束
最终产品,
试着从这里开始。我不确定这里的逻辑是什么,但至少应该运行它,并根据代码给出我认为您需要的结果
CASE
WHEN IND0.M_COM_FUT <> 0
AND IND0.M_COM_FUT = IND5.M_COM_IND
AND IND5.M_COM_IND = CMIND5.M_REFERENCE
AND CMIND5.M_PHYSICAL = PHYS5.M_REFERENCE
THEN PHYS5.M_LABEL
WHEN IND0.M_UNDRL = IND3.M_INDEX
AND IND3.M_IND_LAB LIKE '%NBY%'
AND IND3.M_COM_NBY_T = 2
AND IND3.M_COM_FUT = IND6.M_COM_IND
AND IND6.M_COM_IND = CMIND6.M_REFERENCETHEN
AND CMIND6.M_PHYSICAL = PHYS6.M_REFERENCE
THEN PHYS6.M_LABEL
WHEN IND0.M_UNDRL = IND3.M_INDEX
AND IND3.M_COM_IND = CMIND3.M_REFERENCE
AND CMIND3.M_PHYSICAL = PHYS3.M_REFERENCE
THEN PHYS3.M_LABEL
WHEN IND0.M_UNDRL = IND3.M_INDEX
AND IND3.M_IND_LAB LIKE '%NBY%'
AND IND3.M_COM_NBY_T = 0
AND IND3.M_COM_FUT = FUT.M_REFERENCE
AND FUT.M_QUOT_FWD= QUOT.M_REFERENCE
AND QUOT.M_INDEX = IND0.M_INDEX
THEN PHYS0.M_LABEL
WHEN IND0.M_IND_LAB= IND0.M_IND_LAB
THEN PHYS0.M_LABEL
END
案例
当IND0.M_COM_FUT 0
而IND0.M_COM_FUT=IND5.M_COM_IND
和IND5.M_COM_IND=CMIND5.M_参考
和CMIND5.M_物理=PHYS5.M_参考