我有一张下表。

Name count1 Name2 count2
A    1      B     2
B    2      c     4
A    5      C     7

Name有count1值,Name2有count2值。
我需要以下结果
a -> 6   col[0][0] + c[2][0]
b-> 4    col[0][3] + c[1][1]
c -> 11  col[1][3] + col[2][3]

说明:B同时有name和name1,因此我们需要为B添加count1和count2

最佳答案

您需要取消激活数据,然后进行聚合。下面是一个简单的方法:

select name, sum(cnt)
from ((select name1 as name, count1 as cnt from t) union all
      (select name2, count2 from t)
     ) t
group by name;

最新版本的Postgres支持横向连接。当您拥有大量数据时,这些方法可能更有效,但union all也可以正常工作。
编辑:
横向连接非常相似:
select v.name, sum(v.cnt)
from t, lateral join
     (values (t.name1, t.count1), (t.name2, t.count2)) v(name, cnt)
group by v.name;

关于sql - 在创建PostgreSQL查询时需要帮助,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50003516/

10-14 00:48