语句为简要为:
 select a.swjg_dm,a.swjg_mc,a.zdyj_lm,a.swry_count,b.zdyj_lm,b.swry_count,zfhj_mc,zfhj_count from 
    (select a.swjg_dm,swjg_mc,zdyj_lm,count(swrybh) swry_count from v_zdyjgc a,zd_swjg b
    where a.swjg_dm like '213030400'
          and a.swjg_dm=b.swjg_dm
          and gclx_dm=0
    group by a.swjg_dm,swjg_mc,zdyj_lm) a,
    (select a.swjg_dm,swjg_mc,zdyj_lm,count(swrybh) swry_count from v_zdyjgc a,zd_swjg b
    where a.swjg_dm like '213030400'
          and a.swjg_dm=b.swjg_dm
          and gclx_dm=1
    group by a.swjg_dm,swjg_mc,zdyj_lm) b,
    (select  khdw_dm as swjg_dm,swjg_mc,zfhj_mc,count(zfhj_dm) zfhj_count from v_sdkhqc 
    where khdw_dm like '213030400'
          and gclx_dm=0
          group by khdw_dm,swjg_mc,zfhj_dm,zfhj_mc) c
    where a.swjg_dm=b.swjg_dm
          and a.swjg_dm=c.swjg_dm
查询结果为
213030400 秦皇岛市北戴河区地方税务局 非正常户认定率 2 税务登记核发错误率 1 发票管理 1
213030400 秦皇岛市北戴河区地方税务局 非正常户认定率 2 税务登记核发错误率 1 税务登记 2
213030400 秦皇岛市北戴河区地方税务局 首次按期辅导率 4 税务登记核发错误率 1 发票管理 1
213030400 秦皇岛市北戴河区地方税务局 首次按期辅导率 4 税务登记核发错误率 1 税务登记 2
213030400 秦皇岛市北戴河区地方税务局 限期未登记(设立、变更)处罚率 3 税务登记核发错误率 1 发票管理 1
213030400 秦皇岛市北戴河区地方税务局 限期未登记(设立、变更)处罚率 3 税务登记核发错误率 1 税务登记 2其中有重复的
我要的结果只要求有三行数据,因为用swjg_dm作为关联所以纪录
请问有别的办法能去掉那些重复的数吗?

解决方案 »

  1.   

    首先你这样写SQL效率很低,我稍微改改,没测试过,你自己去调试
    select a.swjg_dm,a.swjg_mc,
           max(decode(gclx_dm,0,zdyj_lm)) zdyj_lm1,
           sum(decode(gclx_dm,0,1,0)) swry_count1,
           max(decode(gclx_dm,1,zdyj_lm)) zdyj_lm2, 
           sum(decode(gclx_dm,1,1,0)) swry_count2,
           '发票管理' zfhj_mc1,
           sum(decode(zfhj_mc,'发票管理',1,0)) zfhj_count1,
           '税务登记' zfhj_mc2, 
           sum(decode(zfhj_mc,'税务登记',1,0)) zfhj_count2
    from v_zdyjgc a,zd_swjg b,v_sdkhqc c
    where a.swjg_dm = b.swjg_dm and b.swjg_dm = c.khdw_dm
    and b.swjg_dm like '213030400' --这里为什么是like,=号效率高多了
    group by a.swjg_dm,a.swjg_mc
      

  2.   

    还是不行啊zdyj_lm十多条纪录
    不能用max