pgsql动态行专列
时间: 2023-08-01 08:08:34 浏览: 94
您好!对于将动态行转换为专列,您可以使用 PostgreSQL 中的 crosstab 函数。CROSSTAB 函数是一个常见的扩展,通常与表达式索引和表达式索引中的 LATERAL JOIN 一起使用。它的作用是将输入的行数据转换为以列形式呈现的输出。
以下是一个示例,展示了如何使用 crosstab 函数将动态行转换为专列:
首先,您需要安装表达式索引和 crosstab 扩展。可以使用以下命令完成安装:
```
CREATE EXTENSION tablefunc;
CREATE EXTENSION crosstab;
```
接下来,假设您有一个名为 data 的表,其中包含以下数据:
```
id | category | value
---+----------+-------
1 | A | 10
1 | B | 20
1 | C | 30
2 | A | 40
2 | B | 50
2 | C | 60
```
要将上述数据转换为以 category 为列的专列形式,您可以使用以下查询:
```
SELECT *
FROM crosstab(
'SELECT id, category, value FROM data ORDER BY 1,2',
'SELECT DISTINCT category FROM data ORDER BY 1'
) AS ct(id integer, A integer, B integer, C integer);
```
此查询将返回以下结果:
```
id | A | B | C
---+----+----+----
1 | 10 | 20 | 30
2 | 40 | 50 | 60
```
这样,您就可以将动态行转换为专列形式。
希望这个示例能够帮助您解决问题。如果您有任何其他问题,请随时提问!
阅读全文