postgres pivot替代
时间: 2023-09-19 20:05:04 浏览: 213
在 PostgreSQL 中,可以使用 crosstab 函数来执行 pivot 操作。crosstab 函数需要安装 "tablefunc" 模块,可以使用以下命令安装:
CREATE EXTENSION tablefunc;
然后,可以使用以下语法执行 pivot 操作:
SELECT *
FROM crosstab(
'SELECT <row_column>, <category_column>, <value_column>
FROM <table_name>
ORDER BY <row_column>, <category_column>',
'SELECT DISTINCT <category_column>
FROM <table_name>
ORDER BY 1'
) AS ct (<row_column> <row_type>, <category_column_1> <category_type_1>, <category_column_2> <category_type_2>, ..., <category_column_n> <category_type_n>);
其中,
例如,如果有以下表格:
id | name | category | value
---+------+----------+-------
1 | A | X | 10
2 | B | X | 20
3 | A | Y | 30
4 | B | Y | 40
可以使用以下查询执行 pivot 操作:
SELECT * FROM crosstab(
'SELECT name, category, value FROM table_name ORDER BY 1,2',
'SELECT DISTINCT category FROM table_name ORDER BY 1'
) AS ct (name varchar, X int, Y int);
得到以下结果:
name | X | Y
-----+----+----
A | 10 | 30
B | 20 | 40
相关推荐














