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

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

我在甲骨文中有下表:

  1. Id Acct Name
  2. ==================
  3. 1 123 Anyone
  4. 1 234 Anyone
  5. 2 435 Someone
  6. 2 675 Someone
  7. 2 732 Someone
  8. 3 765 Anonymous
  9. 4 987 Hidden
  10. 4 987 Hidden

我需要以下输出:

  1. Id Acct1 Acct2 Name
  2. ==========================
  3. 1 123 234 Anyone
  4. 2 435 675 Someone
  5. 2 435 732 Someone

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

7rtdyuoh

7rtdyuoh1#

使用自联接:

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

或者,如果你可以有两个以上的帐户,那么也许 listagg() 更合适的方法是:

  1. select t.id, t.name, listagg(acct, ',') within group (order by acct)
  2. from t
  3. group by t.id, t.name
  4. having min(acct) <> max(acct);

相关问题