--建两个结构相同的表:
create table table_in (
d char(10),--部门
input money,--收入
mon int)--月份create table table_out (
d char(10),
input money,
mon int)--就这句话可以了。涉及了从两个表的结果集中再取值。可以直接使用。粘下来试试插数据的语句就免了吧!
select d,mon,sum(m_in),sum(m_out) from
(select a.d,a.mon,sum(a.input) as m_in,0 as m_out from table_in a group by d,mon
union all 
select b.d,b.mon,0 as m_in, sum(b.input) as m_out from table_out b group by d,mon)c
group by d,mon我试过啦!

解决方案 »

  1.   

    select a.部门, a.月份, sum(收入), sum(支出)
    from Table1 a
    right join table2 b on a.部门=b.部门
    and a.月份=b.月份
    group by a.部门, a.月份
      

  2.   

    select a.部门, a.月份, sum(收入), sum(支出)
    from Table1 a
    right join table2 b on a.部门=b.部门
    and a.月份=b.月份
    group by a.部门, a.月份
      

  3.   

    收入表和支出表如果是流水帐的话,erickleung() 和kknd_net(花样年华之往事如烟) 的答案都是错误的. bobby05(标准菜鸟) 的语句正确 .
      

  4.   

    erickleung() 的方法不对,
    如果某一个月只有3条支出,3条收入记录,做了表连接后出现了9条记录select 部门,收入,支出,月份
    from(
          select 部门,收入,0,月份
              from 收入表
          union
          select 部门,0,支出,月份
              from 支出表
       ) as
    group by 部门,月份
      

  5.   

    select a.部门,小计收入,小计支出,b.月份
      from (select 部门,sum(收入) 小计收入,月份 from table1
             group by 部门,月份) a,
           (select 部门,sum(支出) 小计支出,月份 from table2
             group by 部门,月份) b
     where a.部门 = b.部门 (+)
       and a.月份 = b.月份 (+);
      

  6.   

    tanghuan()的答案还是错的。从结果集中取值没有加sum,
      

  7.   

    bobby05(标准菜鸟) 
    就是,就是,看来CTRL+C CTRL+V容易出错
      

  8.   

    事实证明 erickleung() 的方法不对,: KingSunSha(弱水三千) 的方法是最好的。不愧是高手,我服了。
    结帐了,统统送分。