sql pivot多行转多列怎么实现

avatar
作者
筋斗云
阅读量:0

在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值。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!