表A: 应收表
  业务编号 应收
  1        10
  2        10
表B:应付表
  业务编号 应付
  1        20
  3        10等出结果
  1     -10
  2     10
  3      -10
求SQL  

解决方案 »

  1.   

    select isnull(a.业务编号,b.业务编号) [业务编号],
           isnull(a.应收,0)-isnull(b.应付,0)
    from 应收表 a full join 应付表 b on a.业务编号=b.业务编号
      

  2.   

    select isnull(m.业务编号,n.业务编号) 业务编号,
           isnull(m.应收,0) - isnull(n.应付,0)  结果
    from 应收表 m full join 应付表 n
    on m.业务编号 = n.业务编号
      

  3.   

    select isnull(m.业务编号,n.业务编号) 业务编号,
           isnull(m.应收,0) - isnull(n.应付,0)  结果
    from 
    (select 业务编号 , sum(应收) 应收 from 应收表 group by 业务编号) m 
    full join 
    (select 业务编号 , sum(应付) 应付 from 应付表 group by 业务编号) n
    on m.业务编号 = n.业务编号
      

  4.   

    select isnull(a.业务编号,b.业务编号) [业务编号],
           isnull(a.应收,0)-isnull(b.应付,0)
    from (select 业务编号,sum(应收) as 应收 from 应收表 group by 业务编号) a 
    full join (select业务编号,sum(应付) as 应付 from 应付表 group by 业务编号) b 
    on a.业务编号=b.业务编号
      

  5.   

    呵呵 谢谢了 结贴给分
    最后弱弱的问句
    full join的意思是 相互之间 left join??
      

  6.   

    关键词:子查询,多表联查,分组,isnull函数