select spart_code
,已收款=sum(case check_yn when 1 then to_price else 0 end) 
,未收款=sum(case check_yn when 0 then to_price else 0 end) 
from t2 
group by spart_code 

解决方案 »

  1.   

    select spart_code,
      sum(case check_yn when 1 then to_price else 0 end) already_money,
      sum(case check_yn when 0 then to_price else 0 end) 'sum(to_price)',
      sum(case check_yn when 1 then to_price else -to_price end) sub_money
     from t2 group by spart_code
      

  2.   

    select a.*,b.total_money,(a.already_money-b.total_money)as sub_money from
    (select spart_code,sum(to_price)as already_money from t2 group by spart_code,check_yn  having check_yn=1 )a
    join
    (select spart_code,sum(to_price)as total_money form t2 group by spart_code)b
    on a.spart_code=b.spart_code
      

  3.   

    select spart_code
    ,已收款=sum(case check_yn when 1 then to_price else 0 end)
             ,应收款=sum(to_price)  
    ,差额=sum(case check_yn when 0 then to_price else 0 end) 
    from t2 
    group by spart_code 你说的差额应该是未收款吧?