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

修改SQL查询以显示数量为零的区域及商品记录

解决SQL分组后无法显示数量为零的区域/商品问题

你的原查询只会返回my_table中存在对应记录的area+item组合,当某个组合没有记录或所有qty之和为0时,不会出现在结果里。要显示所有区域的所有商品(包括数量为0的情况),可以通过以下方式实现:

方案1:使用独立的区域表和商品表(推荐)

如果你的数据库中有单独存储所有区域的areas表和存储所有商品的items表,用这两个表的笛卡尔积生成所有可能的组合,再左连接原表的聚合结果:

SELECT 
    i.item,
    COALESCE(SUM(t.qty), 0) AS total_qty,
    a.area
FROM areas a
CROSS JOIN items i
LEFT JOIN my_table t ON a.area = t.area AND i.item = t.item
GROUP BY a.area, i.item
ORDER BY a.area, i.item;

方案2:仅使用现有表

如果没有独立的区域/商品表,从my_table中提取所有唯一的area和item来生成组合:

SELECT 
    i.item,
    COALESCE(SUM(t.qty), 0) AS total_qty,
    a.area
FROM (SELECT DISTINCT area FROM my_table) a
CROSS JOIN (SELECT DISTINCT item FROM my_table) i
LEFT JOIN my_table t ON a.area = t.area AND i.item = t.item
GROUP BY a.area, i.item
ORDER BY a.area, i.item;

关键说明

  • CROSS JOIN:生成所有区域与商品的组合,确保每个区域的每个商品都被纳入结果
  • LEFT JOIN:保留所有组合记录,即使my_table中没有对应的数据
  • COALESCE:将无数据时SUM(qty)返回的NULL转换为0,统一结果格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 05:15:43