在 PostgreSQL 中,可以使用 crosstab
函數(shù)來實(shí)現(xiàn)行轉(zhuǎn)列的操作。crosstab
函數(shù)需要通過安裝 tablefunc
擴(kuò)展來使用。
以下是一個(gè)使用 crosstab
函數(shù)進(jìn)行行轉(zhuǎn)列的示例:
假設(shè)有一個(gè)名為 sales
的表,結(jié)構(gòu)如下所示:
id | product | month | amount
-----------------------------
1 | A | Jan | 100
2 | A | Feb | 150
3 | B | Jan | 200
4 | B | Feb | 250
要將上述表按照產(chǎn)品名稱進(jìn)行行轉(zhuǎn)列,可以使用以下 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);
執(zhí)行以上查詢后,將得到如下結(jié)果:
product | jan | feb
--------------------
A | 100 | 150
B | 200 | 250
這樣就實(shí)現(xiàn)了將原始表中的行數(shù)據(jù)按照產(chǎn)品名稱進(jìn)行了轉(zhuǎn)列。