求用sql或者存储过程写出要求查询
zkzh(准考证号,共12位)xm(姓名)sfzh(身份证号)
030603101423周光辉440803780508111
040105101423周光辉440803780508111
060210101423周光辉440803780508111
040112101423周光辉440803780508111
010101109425陈娟450202801201002
010110109425陈娟450202801201002
010112109425陈娟450202801201002
010101108179张三350181820728326
提示:同一个姓名及身份证号可能对应一个或者多个准考证号(zkzh)。
要求:
1、当有姓名及身份证号对应的只有一个准考证号(zkzh)时,则查询出该条信息
2、当姓名及身份证号对应多个准考证号(zkzh)时,只需查出其中一个准考证号(这里要注意了:要求:该准考证号的第5到第6两位(表中标记红色值)对应的数值是相同姓名及身份证号对应的几个准考证号中最大值)对应的信息。
(即如果有多个准考证号的话就只要第5第6两位数值是最大的准考证号,最后要求是每个身份证号+姓名只对应有一个准考证号)
(要求查询结果)
zkzh(准考证号,共12位)xm(姓名)sfzh(身份证号)
040112101423周光辉440803780508111
010112109425陈娟450202801201002
010101108179张三350181820728326
如觉得题意不明,请提出来。谢谢
[解决办法]
--zkzh(准考证号,共12位) xm(姓名) sfzh(身份证号)select *from tb twhere not exists (select 1 from tb where xm=t.xm and sfzh=t.sfzh and convert(int,substring(zkzh,5,2)) > convert(int,substring(t.zkzh,5,2)))
[解决办法]
select * from test a where right(LEFT(a.zkzh,6),2)=( select max(right(LEFT(B.zkzh,6),2)) from test b where a.xm =b.xm and a.sfzh =b.sfzh )
[解决办法]
select * from test a where SUBSTR(a.zkzh,5,2) =( select SUBSTR(b.zkzh,5,2) from test b where a.xm =b.xm and a.sfzh =b.sfzh )