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

如何对多列数据分组汇总?按产品分组并按型号统计数量

按产品名称分组并汇总对应型号的数量

原表 tblStore

IDProductModelQty
1BananaM11.00
2AppleM30.50
3PawpawM31.50
4OrangeM22.00
5BananaM11.00
6OrangeM10.50

原错误SQL语句

Select Product, 
    Sum(Case When tblStore.Quantity  = 'M1' Then 1 Else 0 End) As M1,
    Sum(Case When tblStore.Quantity  = 'M2' Then 1 Else 0 End) As M2,
    Sum(Case When tblStore.Quantity  = 'M3' Then 1 Else 0 End) As M3
From tblStore
Group by Name

预期输出

ProductM1M2M3
Banana2.0
Apple0.5
Pawpaw1.5
Orange0.52.0

修正后的SQL语句

原SQL存在三处关键错误:

  • 字段引用错误:表中不存在Quantity字段,需改为Model;
  • 聚合逻辑错误:原语句统计的是符合条件的行数(用Then 1),实际需要累加Qty字段的值;
  • 分组字段错误:Group by Name需改为Group by Product,表中无Name字段。

修正后的代码:

SELECT 
    Product,
    SUM(CASE WHEN Model = 'M1' THEN Qty ELSE NULL END) AS M1,
    SUM(CASE WHEN Model = 'M2' THEN Qty ELSE NULL END) AS M2,
    SUM(CASE WHEN Model = 'M3' THEN Qty ELSE NULL END) AS M3
FROM tblStore
GROUP BY Product

执行该语句后即可得到符合预期的结果。若需要将NULL显示为空字符串,可使用COALESCE函数进行转换,例如:

SELECT 
    Product,
    COALESCE(SUM(CASE WHEN Model = 'M1' THEN Qty END), '') AS M1,
    COALESCE(SUM(CASE WHEN Model = 'M2' THEN Qty END), '') AS M2,
    COALESCE(SUM(CASE WHEN Model = 'M3' THEN Qty END), '') AS M3
FROM tblStore
GROUP BY Product

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 19:57:29