如何在 PostgreSQL 中转换查询结果
How to transform the result of a query in PostgreSQL
我想从我的数据库中提取某些信息。在进行第一个查询后,我得到了这样的结果:
Name Description Status Count
-------------------------------------------
A a-desc S1 200
A a-desc S2 50
A a-desc S3 102
B b-desc S1 10
B b-desc S3 12
我想将 table 转换为另一个:
Name Description S1 S2 S3
-------------------------------------------
A a-desc 200 50 102
B b-desc 10 0 12
我想用 Postgres 来做这件事。我尝试使用嵌套查询,但目前无法使用。
这是使用大多数 rdbms 支持的通用 SQL 执行 "pivot query" 的 "traditional" 方法:
select
Name
, Description
, max(case when status = 'S1' then count end) as S1
, max(case when status = 'S2' then count end) as S2
, max(case when status = 'S3' then count end) as S3
from (
your query goes here
) d
group by
Name
, Description
然而,您的数据库可能会为数据透视表提供特定的功能(如果我们知道那是什么),但是传统方法是适应性强的并且知道它很有用。
我想从我的数据库中提取某些信息。在进行第一个查询后,我得到了这样的结果:
Name Description Status Count
-------------------------------------------
A a-desc S1 200
A a-desc S2 50
A a-desc S3 102
B b-desc S1 10
B b-desc S3 12
我想将 table 转换为另一个:
Name Description S1 S2 S3
-------------------------------------------
A a-desc 200 50 102
B b-desc 10 0 12
我想用 Postgres 来做这件事。我尝试使用嵌套查询,但目前无法使用。
这是使用大多数 rdbms 支持的通用 SQL 执行 "pivot query" 的 "traditional" 方法:
select
Name
, Description
, max(case when status = 'S1' then count end) as S1
, max(case when status = 'S2' then count end) as S2
, max(case when status = 'S3' then count end) as S3
from (
your query goes here
) d
group by
Name
, Description
然而,您的数据库可能会为数据透视表提供特定的功能(如果我们知道那是什么),但是传统方法是适应性强的并且知道它很有用。