溫馨提示×

sql pivot多行轉(zhuǎn)多列怎么實現(xiàn)

sql
小億
259
2024-01-23 14:55:57
欄目: 云計算

在SQL中,可以使用CASE WHEN語句結(jié)合聚合函數(shù)來實現(xiàn)對多行數(shù)據(jù)進行轉(zhuǎn)置,將其轉(zhuǎn)換為多列數(shù)據(jù)。具體步驟如下:

  1. 使用GROUP BY來按照需要轉(zhuǎn)置的列進行分組。
  2. 使用CASE WHEN語句將每個需要轉(zhuǎn)置的值轉(zhuǎn)換為對應的列。
  3. 使用聚合函數(shù)對轉(zhuǎn)置后的列進行聚合操作。

以下是一個示例,假設有一個訂單表Orders,其中包含訂單號(OrderID)、商品名稱(ProductName)和銷售數(shù)量(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;

上述查詢將會將每個訂單的商品數(shù)量轉(zhuǎn)換為對應的列,輸出結(jié)果類似于以下表格:

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

在上述示例中,使用CASE WHEN語句將商品名稱轉(zhuǎn)換為對應的列,并使用MAX函數(shù)聚合每個列的值。如果某個訂單沒有對應的商品,那么對應的列會顯示NULL值。

0