oracle sql,从同一行的表中选择不匹配的字段

u4dcyp6a  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(309)

我在甲骨文中有下表:

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

所以,我只需要显示帐户不匹配的记录,但两个帐号都在一行中,如上所述。有人能帮忙吗?

7rtdyuoh

7rtdyuoh1#

使用自联接:

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);

相关问题