有如下表
客户代码 客户名称 单据日期 本期应收 本期应付
01 北京 2004-1-1 1000 0
01 北京 2004-2-1 100 0
01 北京 2004-3-1 0 200
01 北京 2004-4-1 500 200
01 北京 2004-5-1 500 0
02 上海 2004-1-1 0 2000
02 上海 2004-2-1 100 0
02 上海 2004-3-1 0 200
02 上海 2004-4-1 500 200
02 上海 2004-5-1 500 0
我想要得到如下效果:其中(期末余额=上期期末余额+本期应收-本期应付)
客户代码 客户名称 单据日期 本期应收 本期应付 期末余额
01 北京 2004-1-1 1000 0 1000
01 北京 2004-2-1 100 0 1100
01 北京 2004-3-1 0 200 900
01 北京 2004-4-1 500 200 1200
01 北京 2004-5-1 500 0 1700
02 上海 2004-1-1 0 2000 -2000
02 上海 2004-2-1 100 0 -1900
02 上海 2004-3-1 0 200 -2100
02 上海 2004-4-1 500 200 -1800
02 上海 2004-5-1 500 0 -1300
设计如下:
create table 表(客户代码 varchar(10),客户名称 varchar(10),单据日期 datetime,本期应收 int,本期应付 int)
insert 表 select '01 ', '北京 ', '2004-1-1 ',1000,0
union all select '01 ', '北京 ', '2004-2-1 ',100 ,0
union all select '01 ', '北京 ', '2004-3-1 ',0 ,200
union all select '01 ', '北京 ', '2004-4-1 ',500 ,200
union all select '01 ', '北京 ', '2004-5-1 ',500 ,0
union all select '02 ', '上海 ', '2004-1-1 ',0 ,2000
union all select '02 ', '上海 ', '2004-2-1 ',100 ,0
union all select '02 ', '上海 ', '2004-3-1 ',0 ,200
union all select '02 ', '上海 ', '2004-4-1 ',500 ,200
union all select '02 ', '上海 ', '2004-5-1 ',500 ,0
select *,期末余额=(select sum(本期应收-本期应付) from 表 where 客户代码=a.客户代码 and 单据日期 <=a.单据日期)
from 表 a
(
ID int null,
日期 DATETIME NULL,
上月累计 INT NULL
)
INSERT INTO t11
select 1,2010-5, 50
union
select 1,2010-6,55
union
select 1 ,2010-7 ,60
union
select 2 ,2010-6, 50
union
select 2 ,2010-7 ,40
from t11 a