select distinct a.dwjc,sum(convert(decimal,case when b.zbbh='1' then b.sz else '0' end)) 
as '1' from jg_frdwzbsj b inner join jg_frqkb a on a.frdwdm=b.frdwdm 
where b.nian='2007' and b.yue='第一季度' and a.keybz<3 group by dwjc,sz,zbbh得出的结果是:
dwjc      1
一建公司 921330
建工职大 0
天安公司 0
物资中心 0
一建公司 0
构件公司 1424
建工总包 1234616
天津三建 883488
二建公司 0
建校 0
二建公司 481832
建工总包 0
房地产 0
清洗公司 0
天安公司 201015
天津三建 0
构件公司 0
建工集团 0
建研院 0
国投公司 0那些为0的数据都是不存在的,能不能把重复的单位,像是三建公司的数据给去掉?

解决方案 »

  1.   


    在Where 里面加一个 去掉 0 的条件? 你把表结构给写出来,
      

  2.   

    select a.dwjc,sum(ase when b.zbbh='1' then cast(b.sz as decimal) else 0 end) as '1' 
    from jg_frdwzbsj b inner join jg_frqkb a on a.frdwdm=b.frdwdm 
    where b.nian='2007' and b.yue='第一季度' and a.keybz <3 
    group by dwjc
      

  3.   

    select dwjc,sum(1) from 
    (select distinct a.dwjc,sum(convert(decimal,case when b.zbbh='1' then b.sz else '0' end)) 
    as '1' from jg_frdwzbsj b inner join jg_frqkb a on a.frdwdm=b.frdwdm 
    where b.nian='2007' and b.yue='第一季度' and a.keybz <3 group by dwjc,sz,zbbh) c
    group by dwjc
      

  4.   

    select distinct a.dwjc,sum(convert(decimal,case when b.zbbh='1' then b.sz else '0' end)) 
    as h from jg_frdwzbsj b inner join jg_frqkb a on a.frdwdm=b.frdwdm 
    where b.nian='2007' and b.yue='第一季度' and a.keybz <3 group by dwjc,sz,zbbh 
    having h  !=0