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

SQL按SKU合并行并根据Grade生成A_price、B_price列的问题

问题解决:按SKU合并行并生成对应等级价格列

你的SQL报错是因为分组查询的规则要求:SELECT里的列要么是GROUP BY指定的分组列,要么必须用聚合函数(比如MAX、SUM)包裹。你当前的SELECT语句里,grade和price既不在GROUP BY中,也没有聚合函数,数据库无法确定如何处理同一SKU下的多行数据,所以抛出了not a group by expression错误。

要实现按SKU合并行,同时生成A_price和B_price列,需要用聚合函数配合CASE表达式来提取对应等级的价格,正确的SQL如下:

SELECT 
    sku,
    MAX(CASE WHEN grade = 'A' THEN price END) AS A_price,
    MAX(CASE WHEN grade = 'B' THEN price END) AS B_price
FROM dataTable 
GROUP BY sku

说明:

  • MAX()聚合函数会提取同一SKU下符合CASE条件的price值,因为每个SKU对应单个等级的价格只会有一条数据,MAX能准确拿到对应值;如果某个SKU没有对应等级的数据,就会返回null,正好符合你的期望。
  • GROUP BY sku确保结果按SKU分组,每个SKU只返回一行数据。

执行这段SQL后,就能得到你想要的结果:

skuA_priceB_price
iphone700600
samsung200null

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 17:25:38