日期:2014-05-16  浏览次数:20719 次

求一个查询每天流水记录的SQL语句
有下面数据表:

期初数据表
年度    客户    期初
2013    A       1000

期间流入业务数据表
日期          客户   流入
2013-1-2      A      100
2013-1-4      A      200
2013-1-1      B      300

(其中B客户期初没有,是新增加的客户,有业务发生)
期间流出业务数据表
日期          客户   流出
2013-1-2      A      50
2013-1-3      A      100


假设今天是2013-1-5号,如果某个客户作为条件(假设条件是A),要求查询出昨天为止的历史流水帐

日期        客户   期初    流入  流出   本日结存
2013-1-1    A      1000    0      0     1000
2013-1-2    A      1000    100    50    1050
2013-1-3    A      1050    0      100   950
2013-1-4    A      950     200    0     1150

如果条件是B,则流水帐如下
日期        客户   期初    流入  流出   本日结存
2013-1-1    B      0       300      0     300
2013-1-2    B      300      0       0     300
2013-1-3    B      300      0       0     300
2013-1-4    B      300      0       0     300

这样的历史流水帐,能否查询得出来,用什么方法(只要得出正确的结果)比较合适。
谢谢

------解决方案--------------------

create table 期初数据表
(年度 varchar(6), 客户 varchar(5), 期初 int)
 
insert into 期初数据表
 select '2013', 'A', 1000
 
create table 流入业务数据表
(日期 varchar(12), 客户 varchar(5), 流入 int)
 
insert into 流入业务数据表
 select '2013-1-2', 'A', 100 union all
 select '2013-1-4', 'A', 200 union all
 select '2013-1-1', 'B', 300
 
create table 流出业务数据表
(日期 varchar(12), 客户 varchar(5), 流出 int)
 
insert into 流出业务数据表
 select '2013-1-2', 'A', 50 union all
 select '2013-1-3', 'A', 100
 

-- 建存储过程
create proc sp_getHistoryList
(@curDate varchar(12),
 @customer varchar(5))
as
begin

with t as
(select