【问题标题】:query to combine rows with same col value into one row with new cols based on a condition in sql查询根据sql中的条件将具有相同列值的行合并为具有新列的一行
【发布时间】:2022-12-21 13:54:45
【问题描述】:

我的表中有以下数据:

sku grade price
iphone A 700
iphone B 600
samsung A 200

我想合并基于 sku col 的行,并根据等级值将 cols 作为 A_price 和 B_price。

结果应该是:

sku A_price B_price
iphone 700 600
samsung 200 null

我尝试了以下查询:

SELECT 
 CASE WHEN grade = 'A' THEN price end as A_price,
 CASE WHEN grade = 'B' THEN price end as B_price
FROM dataTable 
GROUP BY sku

但它给我的错误是“不是按表达式分组”。

【问题讨论】:

    标签: mysql oracle-sqldeveloper


    【解决方案1】:

    您可以为每一列总结一个 case 表达式:

    SELECT   sku,
             SUM(CASE grade WHEN 'A' THEN sku END) AS a_price,
             SUM(CASE grade WHEN 'B' THEN sku END) AS b_price
    FROM     dataTable
    GROUP BY sku
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-06
      • 2017-01-08
      • 1970-01-01
      • 1970-01-01
      • 2023-01-24
      • 1970-01-01
      • 2021-04-26
      • 2019-05-10
      相关资源
      最近更新 更多