请教一个脚本的思路

以下为详细要求,请教思路,谢谢大家了

CREATE TABLE T1( /*物品入库单表,保存物品历年来每次入库数据*/
ID INT NOT NULL, /*物品ID*/
F1 INT NULL, /*入库数量*/
F2 DATETIME NULL /*入库时间*/

CREATE TABLE T2( /*物品出库单表,保存物品历年来每次出库数据*/
ID INT NOT NULL, /*物品ID*/
F1 INT NULL, /*出库数量*/
F2 DATETIME NULL /*出库时间*/

CREATE TABLE T3( /*物品每月结存表,保存物品从该物品有入出库以来每月结存数据直至现在*/
ID INT NOT NULL, /*物品ID*/
F1 INT NULL, /*物品月初结存数*/
F2 INT NULL, /*物品月末结存数*/
F3 INT NOT NULL, /*结存年份*/
F4 INT NOT NULL /*结存月份*/

题目:
利用T1和T2入出库数据重新生成T3库存台帐数据(以下数据为举例数据)
T1数据:
物品ID 入库数量 入库时间
1 10 2001.1.1
2 20 2001.1.1
3 50 2001.2.1

T2数据:
物品ID 出库数量 入库时间
1 5 2001.1.1
2 10 2001.1.1
3 20 2001.2.1
4 50 2001.2.1


T3数据:
物品ID 物品月初结存数 物品月末结存数 结存年份 结存月份
1 0 5 2001 1
2 0 10 2001 1
1 5 5 2001 2
2 10 10 2001 2
3 0 30 2001 2
4 0 -50 2001 2

作者: weijsorc   发布时间: 2011-06-13

select 物品id,t1.入库数量 物品月初结存数,
t1.入库数量-t2.出库数量 物品月末结存数,datepart(yy,结存年份)结存年份 ,datepart(mm,结月年份)结存年份结存月份 from t1,t2
where t1.物品id=t2.物品id

作者: chuanzhang5687   发布时间: 2011-06-13

3 0 30 2001 2
这个0 是怎么来的?

作者: chuanzhang5687   发布时间: 2011-06-13

该物品,如果没入过库,本月入库,则该物品的月初结存为0

作者: weijsorc   发布时间: 2011-06-13

对于当月有入出库记录的物品,脚本为:
insert t3 select isnull(t1.id, t2.id), 0, isnull(t1.f1,0)-isnull(t2.f1,0), year(isnull(t1.f2,t2.f2)), month(isnull(t1.f2,t2.f2))  
from t1 full join t2 
on
(t1.id = t2.id and month(t1.f2) = month(t2.f2))
但是,如果查询出上月有入出库记录,本月没有的呢?

作者: weijsorc   发布时间: 2011-06-13