当同一列中的值不匹配但不同的列重复时将返回结果的 SQL 查询



我正试图编写一个查询,当ID重复(由不同的Type值引起(并且重复行中的Code值不匹配时,该查询将为我提供ID。只有两个类型值是可能的,因此只有两个重复值。

例如:

ID 类型 代码
ID 1 类型1 ####
ID 1 类型2 ####
ID 2 类型1 ####
ID 2 类型2 $$$

按ID聚合并检查是否获得多个代码(通过比较最小值和最大值或通过计数不同(:

select id, min(code), max(code)
from mytable
group by id
having min(code) <> max(code)
order by id;

根据代码对ID进行排名,因此对于相同的代码,ID的两行都将排名1,如果代码不同,则特定ID的行将排名1和2。稍后,我们可以过滤排名为2的ID,以获得所需的结果。

with temp as(
Select 
ID, 
rank() over (partition by ID order by code) as rn 
from table_name)
select ID from temp where rn = 2

最新更新