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

SQL如何实现带指定条件的列复制 现有SUM聚合查询调整

调整方案

你可以用条件聚合实现这个需求,同时我顺便修正了你原SQL里的两个语法错误:1. stock_batches表未声明别名sb导致关联报错;2. 列定义末尾多余的逗号。
修改后的SQL如下:

SELECT 
  SUM(sm.quantity) AS col1,
  SUM(CASE WHEN sd.transferrable = true THEN sm.quantity ELSE 0 END) AS col2
FROM
  stock_batches AS sb
INNER JOIN stock_distributions AS sd
  ON sd.stock_batch_id = sb.id
INNER JOIN stock_movements AS sm
  ON sm.stock_distribution_id = sd.id

逻辑说明

  • col1保持原有逻辑,统计所有关联匹配到的库存移动数量总和
  • col2通过CASE WHEN做行级过滤,只有当关联的库存分发记录transferrable字段为true时,才将对应移动数量计入总和,否则不计入

如果使用的数据库支持IF函数(比如MySQL、Spark SQL等),col2的计算还可以简写为:

SUM(IF(sd.transferrable = true, sm.quantity, 0)) AS col2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:36:03