select a.物料编号,a.物料名称,a.物料规格,a.入仓日期,a.入仓数量,
b.出仓日期,b.出仓数量 into #a
from
(select a.物料编号,a.物料名称,a.物料规格,b.入仓日期,sum(a.入仓数量) as 入仓数量
from 表二 as a inner join 表一 as b on a.物料编号=b.物料编号
group by a.物料编号,a.物料名称,a.物料规格,b.入仓日期
) as a
full join
(select a.物料编号,a.物料名称,a.物料规格,b.出仓日期,sum(a.出仓数量) as 出仓数量
from 表四 as a inner join 表三 as b on a.物料编号=b.物料编号
group by a.物料编号,a.物料名称,a.物料规格,b.出仓日期
) as b on a.物料编号=b.物料编号 and a.物料名称=b.物料名称 and
a.物料规格=b.物料规格 and a.入仓日期=b.出仓日期
select a.*,
(select isnull(sum(入仓数量),0)-isnull(sum(出仓数量),0)
from #a where 物料编号=a.物料编号 and 物料名称=a.物料名称 and
物料规格=a.物料规格 and (入仓日期<=a.入仓日期 or 入仓日期<=a.出仓日期 or 出仓日期<=a.入仓日期 or 出仓日期<=a.出仓日期)) as 存仓数 from #a as a
SELECT d.物料编号,d.物料名称,d.物料规格,a.入仓日期,b.入仓数量,c.出仓日期,c.出仓数量,存仓数=(b.入仓数量-c.出仓数量)
FROM 表一 A INNER JOIN 表二 B ON A.入仓编号=B.入仓编号
INNER JOIN 表四 D ON B.物料编号=D.物料编号
INNER JOIN 表三 C ON C.出仓编号=D.出仓编号