首页 > 解决方案 > 如何根据两列的值组合获取唯一行

问题描述

我有一个表,其中包含以下字段的值

STAFFNO NAME DESGN DEPTT SPOUSE_STAFFNO SPOUSE_NAME SPOUSE_DESGN SPOUSE_DEPTT
111111  AAA  AM    HR    999999         PPP         JM           FIN
222222  BBB  DM    MKTG  888888         QQQ         AM           HR
333333  CCC  SM    FIN   777777         RRR         DM           FIN
999999  PPP  JM    FIN   111111         AAA         AM           HR
888888  QQQ  AM    HR    222222         BBB         DM           MTKG
777777  RRR  DM    FIN   333333         CCC         SM           FIN

我需要在 Oracle 中编写一个 SQL 查询来获取员工及其配偶的列表,而不需要任何重复的行。从表中的值可以看出,表中存在的记录是针对每个唯一员工的,它重复了配偶的条目。

考虑到员工名单,我需要如下输出,以便如果配偶的详细信息针对任何员工,则不应在输出中再次重复相同的内容,将配偶再次视为员工。

STAFFNO NAME DESGN DEPTT SPOUSE_STAFFNO SPOUSE_NAME SPOUSE_DESGN SPOUSE_DEPTT
111111  AAA  AM    HR    999999         PPP         JM           FIN
222222  BBB  DM    MKTG  888888         QQQ         AM           HR
333333  CCC  SM    FIN   777777         RRR         DM           FIN

请建议所需输出的 ​​SQL 代码。任何帮助将不胜感激。

标签: sqloracle

解决方案


使用相关子查询

select distinct t1.* from table t1
where not exists ( select 1 from table t2 where t1.STAFFNO=t2.SPOUSE_STAFFNO)

推荐阅读