SQL Oracle, выберите отдельные неупорядоченные пары - PullRequest
0 голосов
/ 24 сентября 2019

В моей таблице есть два столбца, которые идентифицируют двух разных людей по отношению друг к другу;однако любая пара может появляться более одного раза, когда отдельные лица переключаются между столбцами (например, А продает от 100 до В, а В продает от 150 до А):

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

Мне нужно получить таблицу, в которой каждая парапоявляется только один раз, т.е. мне нужно найти разные неупорядоченные пары и суммировать значение из всех соответствующих строк:

id1  id2  value
 A    B    250
 C    B    110

Как я могу получить «индекс» для отдельных неупорядоченных пар?Как мне подойти к этой задаче?


РЕДАКТИРОВАТЬ: Дополнительная проблема.Скажем, у меня также есть атрибут для каждого идентификатора, например, страны:

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

Я, очевидно, могу использовать соединение, чтобы вернуть их в таблицу результатов, на втором этапе.Однако есть ли способ сохранить их в первую очередь?

1 Ответ

2 голосов
/ 24 сентября 2019

Вы можете использовать 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)
...