在SQL中,可以使用CASE WHEN
语句结合聚合函数来实现对多行数据进行转置,将其转换为多列数据。具体步骤如下:
GROUP BY
来按照需要转置的列进行分组。CASE WHEN
语句将每个需要转置的值转换为对应的列。以下是一个示例,假设有一个订单表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
值。