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

SQL SUM函数失效问题:按ID汇总佣金未合并且需筛选近一年数据

问题分析与解决方案

你的问题核心出在GROUP BY子句的字段选择上——你把commission_amt和date_id也加到了分组条件里,这会让数据库把每个不同的佣金金额、不同日期的记录都单独分组,自然没法得到同一个fa_id的总佣金。另外,筛选近一年数据的条件可以写得更通用,不用硬编码固定日期。

修正后的SQL语句

SELECT 
    fld.fa_id,
    SUM(commission_amt) AS 'Commission Amount'
FROM 
    [dbo].[fa_dim] fa
JOIN 
    [dbo].[product_summary] fld ON fa.fa_id = fld.fa_id
WHERE 
    -- 将YYYYMMDD格式的数字date_id转换为日期,筛选近一年数据
    CONVERT(DATE, CAST(fld.date_id AS VARCHAR(8)), 112) >= DATEADD(YEAR, -1, GETDATE())
GROUP BY 
    fld.fa_id
ORDER BY 
    fld.fa_id

关键修改说明

  • 精简GROUP BY字段:只保留需要汇总的维度fld.fa_id,这样数据库才会把同一个fa_id的所有记录合并计算总佣金。
  • 优化日期筛选:把数字格式的date_id转换为日期类型,用DATEADD动态计算近一年的起始日期,避免每次手动修改硬编码日期。
  • 改用显式JOIN:替换原来的隐式逗号连接,让SQL逻辑更清晰,可读性更强。

执行后就能得到你期望的汇总结果:

ID  Commission
7   67
8   30

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:12:24