点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,团队
我有一个要求,我必须使用查询中的Case语句选择两列。
目前正在使用以下查询并获得输出
SELECT客户,CREATE_DATE, 案件 当SCHEME_A IN('Y')然后是'SCHEME_A' 当SCHEME_B IN('Y')和SCHEME_A IN('N')然后是'SCHEME_B' 其他 空值 结束 作为WARRANTY_SCHEME, SCHEME_A_VALUE,SCHEME_B_VALUE FROM PRICE_SCHEME_TABLE WHERE CUSTOMER ='*******'AND CREATE_DATE>'2020.01.01'
我得到如下所示的输出
但是我希望输出进一步减少到三列,如下所示
在上面的查询中使用相同的case语句时,我们必须选择相应的方案和相应的方案值,以及如何将查询修改为高于此结果。
致谢
哥瓦丹
(10.7 kB)
我认为您对要获取的结果集的描述不正确。
SQL语句投影了以下列:
因此,您的输出缺少CREATE_DATE列。
如果您希望输出仅包含CUSTOMER,WARRANTY_SCHEME和WARRANTY_VALUE,则必须创建WARRANTY_VALUE列并删除CREATE_DATE, 投影列表中的SCHEMA_A_VALUE和SCHEMA_B_VALUE:
由于计算WARRANTY_VALUE的CASE语句的逻辑与WARRANTY_SCHEME的逻辑相同,因此我将实现留给您。
如果不必要的值始终为0,则您 可以求和(SCHEME_A_VALUE,SCHEME_B_VALUE)
Artem Tkachev 的提示是 没错,但是使用SUM()将在SELECT语句中需要GROUP BY子句。
使用表达式(SCHEMA_A_VALUE + SCHEME_B_VALUE)时,可以在没有GROUP BY的情况下实现相同的想法。
< p>哪个选项最合适不是清晰的-CASE选项为WARRANTY_SCHEME列提供了很好的对称性,可能值得稍长的代码。一周热门 更多>