如何在PostgreSQL中转换查询结果

时间:2017-11-04 23:31:13

标签: sql postgresql pivot crosstab

我想从我的数据库中提取某些信息。在进行第一次查询后,我得到了这样的结果:

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

我想将该表转换为另一个表:

Name   Description    S1     S2     S3
-------------------------------------------
A      a-desc         200    50     102
B      b-desc         10     0      12

我想用Postgres做到这一点。我尝试使用嵌套查询,但目前还没有。

1 个答案:

答案 0 :(得分:1)

这是传统的"执行"枢轴查询的方式"使用大多数rdbms将支持的通用SQL:

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    

但是,您的数据库可能会为数据透视提供特定功能(如果我们知道它是什么),但传统方法具有适应性和有用性。