两条相同的数据 返回其中一条

表T有两条数据 身份证号 单位账号 状态
sfzh dwzh zt
230102196111284834 01 01
230102196111284834 01 02
23010219999999999 01 02

如果整个表里面 有两条或者两条以上的 相同的身份证号 并且 单位账号 相同,同时 状态是01和02的两条数据 就返回身份证号

这个select 怎么写呢?

select sfzh ,dwzh fromwhere  zt in ('01','02') group by  sfzh ,dwzh having count(distinct zt)=2;

这是要状态01、02同时存在的才显示出来吗?

with dat as 
( select '230102196111284834' as sfzh, '01' as dwzh, '01' as zt
    from dual
 union
  select '230102196111284834', '01', '02'
    from dual
 union
  select '23010219999999999', '01', '02'
    from dual)
select sfzh
  from (select sfzh, dwzh, rank() over(partition by sfzh, dwzh order by zt ) as rn
          from dat)
where rn = 2;
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632