在 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
这样就实现了将原始表中的行数据按照产品名称进行了转列。