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
干杯