b1(ddh,bm,je)
b2(ddh,bm,je,sj)
b1中有6条数据,b2中没有数据以下为我的sql语句,为什么结果集为什么是0了?当b2中没有数据,想要结果集要怎么改了?
select m.b1_cnt-n.b2_cnt,m.b1_j-n.b2_j from
(select b1.bm,count(b1.ddh) b1_cnt,sum(je) b1_j from b1 group by bm) m
left join
(select b2.bm, count(b2.ddh) b2_cnt sum(je) b2_j from b2 where ddh in (select ddh from b1)) n
on m.bm=n.bm 

解决方案 »

  1.   

    当出现NULL值的时候 与任何数相减都为0
      

  2.   

    加上空值判断应该就可以了
    select m.b1_cnt-isnull(n.b2_cnt,0),m.b1_j-isnull(n.b2_j,0.00) from
    (select b1.bm,count(b1.ddh) b1_cnt,sum(je) b1_j from b1 group by bm) m
    left join
    (select b2.bm, count(b2.ddh) b2_cnt sum(je) b2_j from b2 where ddh in (select ddh from b1)) n
    on m.bm=n.bm  
      

  3.   

    判断下null ,case when  or isnull
      

  4.   

    我在想你n表没group by怎么执行成功的