在"选择查询"中使用单例语句来显示多列

2020-08-13 21:24发布

         点击此处--->   EasySAP.com群内免费提供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)

         点击此处--->   EasySAP.com群内免费提供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)
付费偷看设置
发送
3条回答
南山jay
1楼 · 2020-08-13 21:43.采纳回答

我认为您对要获取的结果集的描述不正确。

SQL语句投影了以下列:

 SELECT
     顾客
   ,CREATE_DATE
   ,CASE ... AS WARRANTY_SCHEME
   ,SCHEME_A_VALUE
   ,SCHEME_B_VALUE
 FROM 

因此,您的输出缺少CREATE_DATE列。

如果您希望输出仅包含CUSTOMER,WARRANTY_SCHEME和WARRANTY_VALUE,则必须创建WARRANTY_VALUE列并删除CREATE_DATE, 投影列表中的SCHEMA_A_VALUE和SCHEMA_B_VALUE:

 SELECT
     顾客
   ,CASE ... AS WARRANTY_SCHEME
   ,CASE ... AS WARRANTY_VALUE
 FROM 

由于计算WARRANTY_VALUE的CASE语句的逻辑与WARRANTY_SCHEME的逻辑相同,因此我将实现留给您。

梦想连接
2楼-- · 2020-08-13 21:34

如果不必要的值始终为0,则您 可以求和(SCHEME_A_VALUE,SCHEME_B_VALUE)

小灯塔
3楼-- · 2020-08-13 21:44

Artem Tkachev 的提示是 没错,但是使用SUM()将在SELECT语句中需要GROUP BY子句。

使用表达式(SCHEMA_A_VALUE + SCHEME_B_VALUE)时,可以在没有GROUP BY的情况下实现相同的想法。

< p>哪个选项最合适不是清晰的-CASE选项为WARRANTY_SCHEME列提供了很好的对称性,可能值得稍长的代码。

一周热门 更多>