我需要根据另一行比较同一列的数据。假设我有一个表格,其中显示了如下详细信息:
用户名 | 服务 | 特权 |
---|---|---|
美国广播公司 | 测试 | 审计 |
XYZ | 测试 1 | 维持 |
XYZ | 测试 1 | 管理 |
XYZ | 测试 1 | 审计 |
我想要这样的结果:
用户名 | 服务 | 特权 |
---|---|---|
XYZ | 测试 1 | 维持 |
XYZ | 测试 1 | 管理 |
基本上,我想删除在多个服务中使用的所有权限,例如在测试和测试 1 服务中都使用了审计权限。
如何使用 Oracle SQL 实现此解决方案?
像这样的东西?第 1 - 6 行的样本数据;查询从第 7 行开始。
SQL> with test (username, service, privilege) as
2 (select 'ABC', 'Test' , 'Audit' from dual union all
3 select 'XYZ', 'Test1', 'Maintain' from dual union all
4 select 'XYZ', 'Test1', 'Manage' from dual union all
5 select 'XYZ', 'Test1', 'Audit' from dual
6 )
7 select *
8 from test
9 where privilege not in (select privilege
10 from test
11 group by privilege
12 having count(*) > 1);
USE SERVI PRIVILEG
--- ----- --------
XYZ Test1 Maintain
XYZ Test1 Manage
SQL>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句