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

T-SQL车辆销售报表分组异常:合并同客户同周期重复行

T-SQL 车辆销售报表合并行解决方案

当前查询因按车辆类型分组,导致同一客户同一周期的轿车、卡车数据分为两行显示。要实现同一行展示两类车辆的销售数据,需调整聚合逻辑与分组字段,修改后的查询如下:

SELECT 
    c.Name_Customer AS Customer, 
    FORMAT(v.Sell_Date, 'M/yyyy') AS Period,
    -- 统计轿车销售数量
    SUM(CASE WHEN t.Name_Vehicle_Type = 'Car' THEN 1 ELSE 0 END) AS [Cars quantity],
    -- 统计轿车销售总价
    SUM(CASE WHEN t.Name_Vehicle_Type = 'Car' THEN v.Sell_Price ELSE 0 END) AS [Cars total price],
    -- 统计卡车销售数量
    SUM(CASE WHEN t.Name_Vehicle_Type = 'Truck' THEN 1 ELSE 0 END) AS [Trucks quantity],
    -- 统计卡车销售总价
    SUM(CASE WHEN t.Name_Vehicle_Type = 'Truck' THEN v.Sell_Price ELSE 0 END) AS [Trucks total price]
FROM
    Customer AS c
INNER JOIN Vehicle AS v ON c.ID_Customer = v.ID_Customer
INNER JOIN Vehicle_Type AS t ON v.ID_Vehicle_Type = t.ID_Vehicle_Type
WHERE
    t.Name_Vehicle_Type IN ('Car', 'Truck') -- 仅筛选轿车和卡车数据
GROUP BY 
    c.Name_Customer, FORMAT(v.Sell_Date, 'M/yyyy'), v.ID_Customer
ORDER BY  
    c.Name_Customer, Period

修改说明:

  1. 调整聚合逻辑:用SUM(CASE...)替代原查询中嵌套在CASE里的聚合函数,将符合条件的记录分别计数、求和,实现同一分组内不同类型数据的聚合。
  2. 简化分组字段:移除GROUP BY中的t.Name_Vehicle_Type,仅按客户、周期分组,确保同一客户同一周期的数据合并为一行。
  3. 优化表关联语法:使用INNER JOIN替代旧的逗号分隔表写法,逻辑更清晰易读。
  4. 替换筛选条件:用WHERE子句直接筛选车辆类型,替代原HAVING子句,执行效率更高。

内容的提问来源于stack exchange,提问作者Maria Lúcia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 16:22:53