将“group by”生成的单个字段结果行转换为单个结果行的单独列

问题描述 投票:0回答:1

目前我得到这样的结果(2个结果行):

type|totalUnits
N   | 111
E   | 67 

但是,我想得到这样的结果(1个结果行):

totalUnitsN|totalUnitsE|totalOfBothNandE
111        |67         | 178

是否会有一些方便/推荐的SQL片段,我可以使用它将第一个示例转换为第二个示例?基本上,第一个示例是通过基于类型字段对所有数据进行分组,然后将大约20列汇总到该一个totalUnit字段来生成的。基本上我想保持该查询,然后以某种方式将该数据转换/“合并”到一行。但如果最好的方法不包括我目前的第一步,我也可以考虑从头开始编码。

sql postgresql
1个回答
2
投票

条件聚合似乎很简单:

select sum(case when type = 'N' then totalUnits else 0 end) as totalUnits_N,
       sum(case when type = 'E' then totalUnits else 0 end) as totalUnits_E,
       sum(totalUnits) as totalUnits
from t
where type in ('N', 'E');
© www.soinside.com 2019 - 2024. All rights reserved.