我有两张表,收入表(id,部门名,收入数值,发生时间),支出表(id,部门名,支出数值,发生时间)。但是发生收入,不一定有支出;有支出,不一定有收入。
我要做的是查询两表,结果字段是 时间(时间一定是收入表和支出表的总计),部门名,收入数值,支出数值.
比如是:
时间,         部门名,  收入数值, 支出数值.
2009-05-06      家电     5000        4000
2009-05-07      食品     6000
2009-05-08      家电                 6000请大家帮帮忙了……

解决方案 »

  1.   

    这种嘛,两张表UNION一查询就行了,外层再做个SUM汇总
    select 时间,部门名,sum(收入) 收入数值,sum(支出) 支出数值
    from(
    select 发生时间 时间 ,部门名,sum(收入数值) 收入,0 支出
    from a
    group by 发生时间,部门名
    union all
    select 发生时间 时间 ,部门名,0 收入,sum(支出数值) 支出,
    from a
    group by 发生时间,部门名)
    group by 时间,部门名
      

  2.   


    SQL> SELECT * FROM qzw1; 
     
    DATE1       PAR                          SR
    ----------- -------------------- ----------
    2009-05-18  a                             2
    2009-05-25  b                             1
     
    SQL> SELECT * FROM qzw;
     
    DATE1       PAR                          SR
    ----------- -------------------- ----------
    2009-05-18  a                             3
    2009-05-19  c                             1
     
    SQL> 
    SQL> SELECT SUM(支出), SUM(收入), DATE1, PAR
      2    FROM ((SELECT SUM(SR) 支出, 0 收入, DATE1, PAR
      3             FROM QZW
      4            GROUP BY DATE1, PAR) UNION
      5          (SELECT 0 支出, SUM(SR) 收入, DATE1, PAR
      6             FROM QZW1
      7            GROUP BY DATE1, PAR))
      8   GROUP BY DATE1, PAR
      9  ;
     
       SUM(支出)    SUM(收入) DATE1       PAR
    ---------- ---------- ----------- --------------------
             3          2 2009-05-18  a
             1          0 2009-05-19  c
             0          1 2009-05-25  b