我有一张下表。
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/