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

如何编写SQL按分组汇总发票金额,生成目标报表?

解决按分组汇总发票金额的SQL问题

你的原SQL有两个关键问题:

  • JOIN条件错误:你写的dbo.Clients.Groups = dbo.Clients.Groups是同一个表的字段自关联,会导致两个表数据形成笛卡尔积,根本没正确关联客户和发票数据。
  • 缺少分组与聚合逻辑:要实现金额求和,必须用聚合函数SUM(),同时按目标字段做GROUP BY。

正确的SQL写法

假设你的Clients表和ClientInvoices表通过Client字段关联(如果有客户ID字段,用ID关联更严谨),代码如下:

SELECT 
    c.[Group],  -- Group是SQL关键字,用方括号避免语法错误
    c.Client,
    SUM(ci.[Invoice Amount]) AS [Invoice Amount]
FROM 
    dbo.Clients c
INNER JOIN 
    dbo.ClientInvoices ci ON c.Client = ci.Client  -- 修正关联条件,关联客户表和发票表的客户字段
GROUP BY 
    c.[Group], c.Client  -- 按分组和客户分组汇总

关键说明

  1. 关联条件修正:必须用两个表之间的关联字段(比如客户名称或客户ID)来JOIN,确保每个发票对应正确的客户分组。
  2. 聚合函数SUM():对每个分组下的发票金额求和,得到汇总值。
  3. GROUP BY子句:指定按Group和Client分组,确保每个分组只返回一条汇总记录。
  4. 关键字转义:Group和Invoice Amount是SQL关键字或包含空格,用方括号[]包裹避免语法错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 23:15:24