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
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 代码。任何帮助将不胜感激。
解决方案
使用相关子查询
select distinct t1.* from table t1
where not exists ( select 1 from table t2 where t1.STAFFNO=t2.SPOUSE_STAFFNO)
推荐阅读
- php - 从 PHP 获取 highcharts 图像 URL
- javascript - 在浏览器中使用带有导入的 es6 样式类的 TypeScript 转译代码,而无需额外的转译步骤?
- r - R如何排列数据帧的所有行,以便在列表中返回所有可能的行组合?
- python - Python unix时间戳没有转换但似乎很有价值
- jenkins - Jenkins 工作触发了两次
- excel - 在 VBA 中使用“sumif”和“.formula”和变量
- keycloak - 为什么'id'在keycloak中被称为'sub'?
- javascript - 无法链接 CSS 和 Javascript
- oauth-2.0 - IdentityServer4 丢失登录会话
- gwt - 带有类型化响应的 JsonpRequestBuilder 抛出 InCompatibleClassChangeError