ORACLE SQL, выбрать неподходящие поля из той же таблицы в строке - PullRequest
0 голосов
/ 04 августа 2020

У меня есть следующая таблица в Oracle:

Id    Acct    Name
==================
1     123     Anyone
1     234     Anyone
2     435     Someone
2     675     Someone
2     732     Someone
3     765     Anonymous
4     987     Hidden
4     987     Hidden

, и мне нужен следующий вывод:

Id    Acct1   Acct2   Name
==========================
1     123     234     Anyone
2     435     675     Someone
2     435     732     Someone

Итак, мне нужно показать только записи с несовпадающими Acct #, но оба номера счетов в одной строке, как указано выше. Может кто поможет?

1 Ответ

1 голос
/ 04 августа 2020

Используйте самостоятельное соединение:

select t1.id, t1.name, t1.acct, t2.acct
from t t1 join
     t t2
     on t1.id = t2.id and t1.name = t2.name and t1.acct <> t2.acct;

Или, если у вас может быть более двух учетных записей, возможно, listagg() более уместно:

select t.id, t.name, listagg(acct, ',') within group (order by acct)
from t
group by t.id, t.name
having min(acct) <> max(acct);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...