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