1.根据你给的最后格式:调整了两条数据,否则结存存在负数
2.觉得"入库 "和"出货"两张表可以合并成一张表"异动"表
3.返回的结果请看附件,同一天的数据没有"合并"成一条显示,此工作交给你处理
Create Table 入库表(料号 Varchar(10),日期 datetime,数量 int)
Create Table 出货表(料号 Varchar(10),日期 datetime,数量 int)
INSERT INTO 入库表 Values('A001','2008-04-01',50)
INSERT INTO 入库表 Values('A002','2008-04-03',80)
--INSERT INTO 入库表 Values('A001','2008-04-07',50)
INSERT INTO 入库表 Values('A001','2008-04-04',50)
--INSERT INTO 入库表 Values('A002','2008-04-08',80)
INSERT INTO 入库表 Values('A002','2008-04-04',80)
INSERT INTO 出货表 Values('A002','2008-04-03',60)
INSERT INTO 出货表 Values('A001','2008-04-05',60)
INSERT INTO 出货表 Values('A001','2008-04-06',40)
INSERT INTO 出货表 Values('A002','2008-04-05',80)
SELECT * FROM 入库表 ORDER BY 料号,日期
SELECT * FROM 出货表 ORDER BY 料号,日期
SELECT * INTO #库存异动表 FROM(
SELECT *,'入库' AS 交易类型
FROM 入库表
UNION
SELECT *,'出货' AS 交易类型
FROM 出货表) a
SELECT * FROM #库存异动表
SELECT 料号,日期,Case WHEN
交易类型='入库' THEN 数量 ELSE 0 END AS 入库数,
Case WHEN
交易类型='出货' THEN 数量 ELSE 0 END AS 出货数,
(SELECT SUM(Case WHEN
交易类型='入库' THEN 数量 ELSE 0 END) -
SUM(Case WHEN
交易类型='出货' THEN 数量 ELSE 0 END ) FROM #库存异动表 a
WHERE a.料号=#库存异动表.料号 AND a.日期 <=#库存异动表.日期) AS 结存数
FROM #库存异动表
DROP Table 入库表
DROP Table 出货表
DROP Table #库存异动表