在 PostgreSQL 中,可以使用 crosstab
函數來實現行轉列的操作。crosstab
函數需要通過安裝 tablefunc
擴展來使用。
以下是一個使用 crosstab
函數進行行轉列的示例:
假設有一個名為 sales
的表,結構如下所示:
id | product | month | amount
-----------------------------
1 | A | Jan | 100
2 | A | Feb | 150
3 | B | Jan | 200
4 | B | Feb | 250
要將上述表按照產品名稱進行行轉列,可以使用以下 SQL 查詢:
SELECT * FROM crosstab(
'SELECT product, month, amount
FROM sales
ORDER BY 1,2',
'SELECT DISTINCT month FROM sales ORDER BY 1'
) AS ct (product text, jan int, feb int);
執行以上查詢后,將得到如下結果:
product | jan | feb
--------------------
A | 100 | 150
B | 200 | 250
這樣就實現了將原始表中的行數據按照產品名稱進行了轉列。