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

SQL查询统计包裹M2、UN维度时返回两行而非一行如何解决

问题原因

你现在返回多行的核心问题是GROUP BY子句包含了S.Unity字段,这会按每个单位类型拆分分组,自然每个单位对应一行数据。另外你把CASE WHEN写在了聚合函数SUM的外层,也导致每个分组只能计算对应单位的数值。

修复后的SQL

SELECT 
    C.Package AS 'Package',
    SUM(CASE S.Unity WHEN 'M2' THEN L.Qt * S.ConvEst ELSE 0 END) AS 'M2',
    SUM(CASE S.Unity WHEN 'UN' THEN L.Qt ELSE 0 END) AS 'UN'
FROM 
    PackageTable AS C
INNER JOIN 
    PackageTableRows L ON L.Package = C.Package
INNER JOIN 
    Products S ON S.Product = L.Product
WHERE 
    C.Package = '587496'
GROUP BY 
    C.Package

修改点说明

  • 移除了GROUP BY中的S.Unity字段,仅按包裹号分组,保证一个包裹只返回一行
  • 将CASE WHEN逻辑放到SUM函数内部,这样聚合时会自动匹配对应单位的数值累加,不需要按单位拆分分组
  • 移除了不必要的DISTINCT,GROUP BY C.Package已经保证包裹号唯一,不需要额外去重
  • 把CASE的默认返回值从NULL改成了0,如果你需要无对应单位时返回NULL,可以把ELSE 0改回ELSE NULL,SUM计算时会自动忽略NULL值,不影响最终统计结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:54:05