Sql 选择重复的SKU';s并将相应的价格放入新的相邻列中

Sql 选择重复的SKU';s并将相应的价格放入新的相邻列中,sql,Sql,我有以下sql表-具有重复的SKU-每个表都有不同的价格,代表批量购买折扣: SKU 价格 SKU1 $10.00 SKU2 $12.00 SKU2 $9.00 SKU1 $10.50 SKU2 $11.20 如果您知道价格的最大数量,可以使用行数()和条件聚合: select sku, max(case when seqnum = 1 then price end) as price_1, max(case when seqnum = 2 then price en

我有以下sql表-具有重复的SKU-每个表都有不同的价格,代表批量购买折扣:

SKU 价格 SKU1 $10.00 SKU2 $12.00 SKU2 $9.00 SKU1 $10.50 SKU2 $11.20
如果您知道价格的最大数量,可以使用
行数()
和条件聚合:

select sku,
       max(case when seqnum = 1 then price end) as price_1,
       max(case when seqnum = 2 then price end) as price_2,
       max(case when seqnum = 3 then price end) as price_3
from (select t.*,
             row_number() over (partition by sku order by price) as seqnum
      from t
     ) t
group by sku;

注意:这使价格按升序排列。现在还不清楚您可能真正想要什么顺序(如果有的话)。

虽然这在SQL中是可能的,但编程语言和简单的循环更适合此任务。在应用程序中执行此操作,而不是在SQL中。使用SQL可以轻松执行此操作,但您缺少确定哪个价格属于哪个列的标准,您需要另一列进行订购,例如日期或其他值,以便为每个sku/价格提供一个顺序位置。@sTTu-用于确定哪一列的价格从最左边的列到最右边的列最贵到最便宜的标准。我猜你也许可以通过使用order by price的某种查询,然后在相应的列中选择第1、第2、第3和第4个,但是,我不知道怎么做。谢谢@Gordon Linoff!这是完美的作品,因为我知道我有一个最大的4个价格每sku。因此,我修改了添加额外的列和desc的订单价格,以便更高的价格在开始时。