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

SQL查询优化:消除零值并将双数据源的商品入库数量合并至同一行

解决思路与修改方案

嘿,你的SQL思路已经摸到门道了,问题出在分组维度和聚合逻辑的顺序上!原查询把data_source也加入了分组,导致每个product + inbound_type组合会生成两行数据(对应两个数据源),而CASE里的ELSE 0就产生了多余的零值。

修改后的SQL查询

SELECT 
  product,
  inbound_type,
  SUM(CASE WHEN data_source = 'data_source_01' THEN quantity ELSE 0 END) AS quantity_data_source_01,
  SUM(CASE WHEN data_source = 'data_source_02' THEN quantity ELSE 0 END) AS quantity_data_source_02
FROM check_inbound
GROUP BY product, inbound_type
ORDER BY product, inbound_type;

关键修改点说明

  • 调整分组维度:去掉data_source的分组,只按product和inbound_type分组。这样每个产品+入库类型的组合只会生成一行结果,完美匹配你想要的合并行需求。
  • 调整聚合与条件的顺序:把SUM聚合函数放到CASE表达式外面,这样会针对每个product + inbound_type分组,分别统计对应数据源的数量总和。你的测试数据里每个分组在每个数据源下只有一条记录,用MAX替代SUM也能得到相同结果,但SUM更通用——如果后续某个分组在同一数据源下有多条记录,它能正确计算总数量。
  • 消除零值:由于每个分组包含了两个数据源的记录,CASE表达式会精准匹配对应数据源的数量,不会再出现不必要的零值(如果某个数据源没有该分组的记录,才会显示0,这属于合理场景)。

执行结果

运行上面的查询后,就能得到你预期的结果格式:

productinbound_typequantity_data_source_01quantity_data_source_02
product_atype_01500980
product_atype_02200315
product_btype_01130760
product_btype_02320512
product_ctype_01700125
product_ctype_02850720

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.01 03:12:27