sql

sql pivot多行转多列怎么实现

小亿
322
2024-01-23 14:55:57
栏目: 云计算

在SQL中,可以使用CASE WHEN语句结合聚合函数来实现对多行数据进行转置,将其转换为多列数据。具体步骤如下:

  1. 使用GROUP BY来按照需要转置的列进行分组。
  2. 使用CASE WHEN语句将每个需要转置的值转换为对应的列。
  3. 使用聚合函数对转置后的列进行聚合操作。

以下是一个示例,假设有一个订单表Orders,其中包含订单号(OrderID)、商品名称(ProductName)和销售数量(Quantity):

SELECT OrderID,
       MAX(CASE WHEN ProductName = 'Product A' THEN Quantity END) AS ProductA,
       MAX(CASE WHEN ProductName = 'Product B' THEN Quantity END) AS ProductB,
       MAX(CASE WHEN ProductName = 'Product C' THEN Quantity END) AS ProductC
FROM Orders
GROUP BY OrderID;

上述查询将会将每个订单的商品数量转换为对应的列,输出结果类似于以下表格:

OrderID | ProductA | ProductB | ProductC
--------+----------+----------+---------
1       | 5        | 2        | NULL
2       | 3        | NULL     | 1
3       | NULL     | 4        | 3

在上述示例中,使用CASE WHEN语句将商品名称转换为对应的列,并使用MAX函数聚合每个列的值。如果某个订单没有对应的商品,那么对应的列会显示NULL值。

0
看了该问题的人还看了