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

如何针对相同product_id,按flag规则汇总stock列数据

解决方案

你需要调整分组逻辑,不再按flag分组,同时通过聚合函数或条件判断确定最终的flag值,以下是两种可行的SQL写法:

方法一:利用MAX()函数特性

因为字符Y的排序优先级高于N,直接用MAX(flag)就能在同时存在两种标识时返回Y,单一标识时返回对应值,配合SUM(stock)计算总库存:

SELECT product_id,
       MAX(flag) AS flag,
       SUM(stock) AS stock
FROM stock_table
WHERE product_id = 120104
GROUP BY product_id;

方法二:显式条件判断(更通用)

如果担心数据库排序规则差异,可通过CASE语句明确判断是否存在两种标识,再指定flag值:

SELECT product_id,
       CASE 
           WHEN COUNT(DISTINCT flag) = 2 THEN 'Y'
           ELSE MAX(flag) 
       END AS flag,
       SUM(stock) AS stock
FROM stock_table
WHERE product_id = 120104
GROUP BY product_id;

逻辑说明

  • 原查询因同时按product_id和flag分组,导致同一商品拆分为两行;新查询仅按product_id分组,确保同一商品只返回一行。
  • 两种方法都能满足你的规则:存在Y和N时合并为Y并求和库存,单一标识时直接汇总对应库存。

内容的提问来源于stack exchange,提问作者Patrick Diorio Carvalho

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 15:27:05