我有2个表:
1、个人应交费记录表
人员编号  本月用水量   本月应交费    记录日期2、缴费登记表
人员编号  本月缴费数     记录日期现在我想生成一个视图(指定一个时间后)
人员编号   本月用水量    本月应交费   累计应交费     本月缴费数    累计欠款如何实现?谢谢

解决方案 »

  1.   

    select m.人员编号, n.本月用水量, n.本月应交费, m.累计应交费, n.本月缴费数, m.累计欠款
    from
    (select 人员编号, sum(本月应交费)as "累计应交费", sum(本月应交费-本月缴费数) as "累计欠款"
    from 个人应交费记录表 a, 缴费登记表 b
    where m.人员编号 = n.人员编号 and 记录日期 <= 指定时间
    ) m,
    (select 人员编号, 本月用水量, 本月应交费,nvl(本月缴费数,0) as "本月缴费数"
    from 个人应交费记录表 a left join 缴费登记表 b
    on a.人员编号 = b.人员编号 and  a.记录日期 = 指定时间 and b.记录日期 = 指定时间
    ) n
    where m.人员编号 = n.人员编号
      

  2.   

    to waterfirer(水清) 
    这是让用户看起来简单。feng2(蜀山风云) 
    没有看懂m,n是指哪个表??
    谢谢
      

  3.   

    有没有更简单的方法啊?feng2(蜀山风云) 
    如果本月没有发生时,你的就不对。
      

  4.   

    SQL> select a1 "人员编号",a2 "本月用水量",a3 "本月应缴费",a5 "记录日期" from a;人员编号   本月用水量 本月应缴费 记录日期
    ---------- ---------- ---------- -----------
    101        15         7.5        2005-7-28
    101        16         8.0        2005-8-30
    101        10         5          2005-9-15
    102        21         10.5       2005-8-20
    103        14         6          2005-8-28
    103        20         10         2005-9-156 rows selectedExecuted in 0.031 secondsSQL> select b1 "人员编号",b2 "本月交费数",b4 "记录日期" from b;人员编号   本月交费数 记录日期
    ---------- ---------- -----------
    101        7.5        2005-7-30
    101        5          2005-8-30
    102        10         2005-8-22
    103        6          2005-8-29
    103        5          2005-9-16Executed in 0.015 secondsSQL> select m.a1 "人员编号",a2 "本月用水量",a3 "本月应缴费",y "累计应缴费",b2 "本月交费数",q "累计欠款"
    from
    (select a1,a2,a3,b2 from
    (
    select a1,a2,a3,b2,to_char(a5,'yyyymm') s 
    from a left join b on a1=b1 and trunc(a5,'mm') = trunc(b4,'mm')
    )
    where s = '200508'
    ) m,
    (select a1,sum(a3) y,sum(a3-nvl(b2,0)) q from
    (
    select a1,a2,a3,b2,to_char(a5,'yyyymm') s
    from a left join b on a1=b1 and trunc(a5,'mm') = trunc(b4,'mm')
    )
    where s <= '200508'
    group by a1
    ) n
    where m.a1=n.a1人员编号   本月用水量 本月应缴费 累计应缴费 本月交费数   累计欠款
    ---------- ---------- ---------- ---------- ---------- ----------
    101        16         8.0              15.5 5                   3
    102        21         10.5             10.5 10                0.5
    103        14         6                   6 6                   0Executed in 0.015 secondsSQL> select m.a1 "人员编号",a2 "本月用水量",a3 "本月应缴费",y "累计应缴费",b2 "本月交费数",q "累计欠款"
    from
    (select a1,a2,a3,b2 from
    (
    select a1,a2,a3,b2,to_char(a5,'yyyymm') s 
    from a left join b on a1=b1 and trunc(a5,'mm') = trunc(b4,'mm')
    )
    where s = '200509'
    ) m,
    (select a1,sum(a3) y,sum(a3-nvl(b2,0)) q from
    (
    select a1,a2,a3,b2,to_char(a5,'yyyymm') s
    from a left join b on a1=b1 and trunc(a5,'mm') = trunc(b4,'mm')
    )
    where s <= '200509'
    group by a1
    ) n
    where m.a1=n.a1人员编号   本月用水量 本月应缴费 累计应缴费 本月交费数   累计欠款
    ---------- ---------- ---------- ---------- ---------- ----------
    103        20         10                 16 5                   5
    101        10         5                20.5                     8Executed in 0.015 secondsSQL>
      

  5.   

    看看这个行不行,有个日期字段。你要查指定日期的就再加个条件
    SQL> select * from aaa;        ID      BYYSL      BYYJF RQ
    ---------- ---------- ---------- ----------
             1          2          6 16-7月 -05
             1          3          9 16-8月 -05
             1          4         12 16-9月 -05
             2          5         15 16-9月 -05SQL> select * from bbb;        ID      BYJFS RQ
    ---------- ---------- ----------
             1          6 16-7月 -05
             1         20 16-9月 -05
    SQL> select a.id,to_char(a.rq,'yyyy-mm') rq,byysl,byyjf,(select sum(byyjf) from
    aaa where rq<=a.rq) ljyjf,
      2  nvl(byjfs,0) byjfs,nvl((select sum(byyjf) from aaa where rq<=a.rq)-(select
    sum(byjfs) from bbb where rq<=b.rq),0) ljqf
      3  from aaa a,bbb b
      4  where a.id=b.id(+) and to_char(a.rq,'yyyy-mm')=to_char(b.rq(+),'yyyy-mm');        ID RQ           BYYSL      BYYJF      LJYJF      BYJFS       LJQF
    ---------- ------- ---------- ---------- ---------- ---------- ----------
             1 2005-07          2          6          6          6          0
             1 2005-08          3          9         15          0          0
             1 2005-09          4         12         27         20          1
             2 2005-09          5         15         42          0          0SQL>
      

  6.   

    to lilylamb(小羊羔)
    好像有点问题,想一下,为什么?
    -------
    ???
      

  7.   

    to feng2(蜀山风云)
    可行
    就是当本月没有发生任何记录,那么就统计不出来了各位对此 还有什么解决的办法??
      

  8.   

    sxbug(太阳雨) :我的那个你看了吗?有什么问题?
      

  9.   

    如果要求将本月没有发生应缴/实缴费记录的也统计出来,只需要加一个外连接就ok了;select distinct 人员编号 from 个人应交费记录表;因为没有了测试数据,这里就不给出测试结果了。