我有2个表:
1、个人应交费记录表
人员编号 本月用水量 本月应交费 记录日期2、缴费登记表
人员编号 本月缴费数 记录日期现在我想生成一个视图(指定一个时间后)
人员编号 本月用水量 本月应交费 累计应交费 本月缴费数 累计欠款如何实现?谢谢
1、个人应交费记录表
人员编号 本月用水量 本月应交费 记录日期2、缴费登记表
人员编号 本月缴费数 记录日期现在我想生成一个视图(指定一个时间后)
人员编号 本月用水量 本月应交费 累计应交费 本月缴费数 累计欠款如何实现?谢谢
调试欢乐多
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.人员编号
这是让用户看起来简单。feng2(蜀山风云)
没有看懂m,n是指哪个表??
谢谢
如果本月没有发生时,你的就不对。
---------- ---------- ---------- -----------
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>
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>
好像有点问题,想一下,为什么?
-------
???
可行
就是当本月没有发生任何记录,那么就统计不出来了各位对此 还有什么解决的办法??