DB2 SQL按双条件分别汇总服务销售额的实现咨询
用DB2 SQL实现双条件销售额汇总的解决方案
你的思路完全正确,**CASE语句搭配聚合函数SUM()**就是实现这类多条件汇总的标准方式,而且你的伪代码逻辑非常清晰,我直接帮你转换成可运行的DB2 SQL代码:
SELECT SUM(CASE WHEN ServiceFile.SERVICE_START > 20200101 THEN ServiceFile.Rate * ServiceFile.Units ELSE 0 END) AS Total_Service_Starts, SUM(CASE WHEN ServiceFile.SERVICE_STOP > 20200101 THEN ServiceFile.Rate * ServiceFile.Units ELSE 0 END) AS Total_Service_Stops FROM ServiceFile;
代码说明:
- 每个
CASE WHEN会单独判断每条记录是否符合条件:如果符合,就计算该记录的销售额(Rate*Units),否则返回0 SUM()会把所有符合条件的销售额累加起来,得到你需要的两个汇总值- 用
ELSE 0是为了明确排除不符合条件的记录,避免NULL值对聚合结果的影响(当然DB2的SUM()会自动忽略NULL,写0更直观)
如果你的业务场景需要按其他维度分组汇总(比如按客户、月份),只需要在SELECT后加上分组字段,再添加GROUP BY子句即可。
内容的提问来源于stack exchange,提问作者Mustapha George
相关产品推荐
相关产品推荐

