SELECT yh.[zjh] '证件号', yh.[zjmc] '证件名称', yh.[sfzh] '身份证号', cyrzt.xx '从业人员状态',yh.[clpzh] '车辆牌照号', cpys.[xx] '车牌颜色', yh.[dlyszh] '道路运输证号', jbbm.[xx] '经办部门' 
FROM [yh_cyry] yh,[zd_cyrzt] cyrzt,[zd_cpys] cpys,[zd_jbbm] jbbm
where yh.cyrzt = cyrzt.cyrzt
and yh.jbbm = jbbm.jbbm
and yh.cpys = cpys.cpys
and yh.cyrzt = '30'--在职
and yh.dlyszh in
(select dlyszh from yh_cyry
where cyrzt = '30'
group by zjh, sfzh,dlyszh
having count(zjh) > 1 and count(sfzh) > 1 and count(cpys) > 1

order by yh.zjh

解决方案 »

  1.   

    我是在SQLSERVER2000中用的,
    语法没错,我是我写SQL的思想可能有错,因为查不出预期的结果。
      

  2.   

    SELECT yh.[zjh] 证件号, yh.[zjmc] 证件名称, yh.[sfzh] 身份证号, cyrzt.xx 从业人员状态,yh.[clpzh] 车辆牌照号, cpys.[xx] 车牌颜色, yh.[dlyszh] 道路运输证号, jbbm.[xx] 经办部门 
    FROM [yh_cyry] yh,[zd_cyrzt] cyrzt,[zd_cpys] cpys,[zd_jbbm] jbbm
    where yh.cyrzt = cyrzt.cyrzt
    and yh.jbbm = jbbm.jbbm
    and yh.cpys = cpys.cpys
    and yh.cyrzt = '30'--在职
    and yh.dlyszh in
    (select dlyszh from yh_cyry
    where cyrzt = '30'
    group by zjh, sfzh,dlyszh
    having count(*)>1

    order by yh.zjh
      

  3.   

    sorry, 上面的错了SELECT yh.[zjh] 证件号, yh.[zjmc] 证件名称, yh.[sfzh] 身份证号, cyrzt.xx 从业人员状态,yh.[clpzh] 车辆牌照号, cpys.[xx] 车牌颜色, yh.[dlyszh] 道路运输证号, jbbm.[xx] 经办部门 
    FROM [yh_cyry] yh,[zd_cyrzt] cyrzt,[zd_cpys] cpys,[zd_jbbm] jbbm,
    (select zjh, sfzh,cpys from yh_cyry
    where cyrzt = '30'
    group by zjh, sfzh,cpys
    having count(*)>1
    ) t1
    where yh.cyrzt = cyrzt.cyrzt
    and yh.jbbm = jbbm.jbbm
    and yh.cpys = cpys.cpys
    and yh.cyrzt = '30'--在职
    and yh.zjh=t1.zjh and yh.sfzh=t1.sfzh and yh.cpys=t1.cpys
    order by yh.zjh