SQL Oracle,select 不同的无序对

SQL Oracle, select distinct unordered couples

我的 table 有两列,用于标识两个不同的个体;但是,任何一对都可能出现不止一次,并且个人在列之间交换(例如,A 卖 100 给 B,B 卖 150 给 A):

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

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

id1  id2  value
 A    B    250
 C    B    110

如何获得不同的无序对的 "index"?我应该如何处理这个任务?


编辑:额外问题。假设我也有每个 Id 的属性,例如国家:

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

我显然可以在第二步中使用联接将它们返回到结果 table 中。但是,有没有办法让它们保持在第一位?

您可以使用 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)