Oracle SQL:获取具有一个不同列的重复行,并对结果设置条件
我的表数据如下所示Oracle SQL:获取具有一个不同列的重复行,并对结果设置条件,sql,oracle,duplicates,Sql,Oracle,Duplicates,我的表数据如下所示 _______________________ testid rulekey result _______________________ 1234 | abc_123 | Test Pass 1234 | abc_123 | Test Fail 1234 | abc_123 | Missing Data 5678 | xyz_599 | Test Pass 5678 | xyz_599 | Test Pass 5678 |
_______________________
testid rulekey result
_______________________
1234 | abc_123 | Test Pass
1234 | abc_123 | Test Fail
1234 | abc_123 | Missing Data
5678 | xyz_599 | Test Pass
5678 | xyz_599 | Test Pass
5678 | xyz_599 | Missing Data
我希望结果只返回唯一的testid和rulekey(以及此处未表示的几个列),并有一个条件返回结果,即即使重复行中的一行出现测试失败,如果一个测试的缺失数据和其他测试的通过数据仍然缺失,则其测试同样失败
有人能帮我查询一下吗
1234 abc_123 Test Fail
5678 xyz_599 Missing Data
您可以使用分析函数
行数
实现它,如下所示:
Select * from
(Select t.*,
row_number() over
(partition by testid, rubekey
order by case result
when 'Test Fail' then 1
when 'Missing Data' then 2
else 3 end)
as rn
From your_table t)
Where rn = 1
干杯