在SQL中,可以使用CASE WHEN
語句結(jié)合聚合函數(shù)來實現(xiàn)對多行數(shù)據(jù)進行轉(zhuǎn)置,將其轉(zhuǎn)換為多列數(shù)據(jù)。具體步驟如下:
GROUP BY
來按照需要轉(zhuǎn)置的列進行分組。CASE WHEN
語句將每個需要轉(zhuǎn)置的值轉(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
值。