阅读量:0
在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
值。