You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在同一行中展示GRAND_TOTAL及各渠道分项金额?

如何修改SQL实现同一ID一行的渠道金额汇总?

问题现象

期望输出每个ID对应一行数据,包含总计及各渠道分项金额:

ID | GRAND_TOTAL | CHANNEL_1 | CHANNEL_2
1  | 100.00      | 50.00     | 50.00
2  | 500.00      | 100.00    | 400.00

但当前执行的查询返回同一ID对应多行,每行仅单个渠道有金额值:

ID | GRAND_TOTAL | CHANNEL_1 | CHANNEL_2
1  | 100.00      | 50.00     | 0
2  | 100.00      | 0         | 50.00
1  | 500.00      | 100.00    | 0
2  | 500.00      | 0         | 400.00

当前使用的SQL语句:

SELECT 
       ID, 
       SUM(Amount) AS GRAND_TOTAL,
       CASE WHEN CHANNEL_ID = 1 THEN AMOUNT ELSE 0 END CHANNEL_1,
       CASE WHEN CHANNEL_ID = 2 THEN AMOUNT ELSE 0 END CHANNEL_2
FROM
       CHANNEL_AMOUNT
GROUP BY
       ID, CHANNEL_ID, AMOUNT

解决方案

修改后的SQL语句如下:

SELECT 
       ID, 
       SUM(Amount) AS GRAND_TOTAL,
       SUM(CASE WHEN CHANNEL_ID = 1 THEN AMOUNT ELSE 0 END) AS CHANNEL_1,
       SUM(CASE WHEN CHANNEL_ID = 2 THEN AMOUNT ELSE 0 END) AS CHANNEL_2
FROM
       CHANNEL_AMOUNT
GROUP BY
       ID

修改说明

  1. 对渠道金额的CASE表达式添加SUM聚合:原本的CASE仅返回单条记录的渠道金额(非对应渠道则为0),外层包裹SUM后,会将同一ID下对应渠道的所有金额累加,得到该渠道的总金额。
  2. 简化GROUP BY子句:仅保留ID作为分组依据,这样查询会按ID聚合所有相关记录,每个ID仅返回一行汇总结果,不会再按渠道或金额拆分。

内容的提问来源于stack exchange,提问作者jymskrl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 17:20:36