SQL Oracle,选择不同的无序耦合



我的表有两列,它们标识了两个不同的个体;但是,任何一对夫妇都可能出现不止一次,个体在列之间切换(例如,A 卖 100 给 B,B 卖 150 给 A(:

id1  id2  value
A    B    100
C    B    110
B    A    150

我需要获得一个表,其中每对只出现一次,即我需要找到不同的无序对,并从所有相应的行中求和值:

id1  id2  value
A    B    250
C    B    110

如何获取不同无序对的"索引"?我应该如何处理这项任务?


编辑:额外的问题。假设我每个 ID 都有一个属性,例如国家/地区:

id1  id2  country1 country2 value
A    B         IT      FR   100
C    B         US      FR   110
B    A         FR      IT   150

显然,我可以在第二步中使用联接将它们重新放入结果表中。但是,有没有办法首先保留它们?

您可以使用least()greatest()

select least(id1, id2) as id1, greatest(id1, id2) as id2, sum(value)
from t
group by least(id1, id2), greatest(id1, id2)

最新更新