if object_id('tempdb..#a') is not null drop table #a
select u.物料编号,u.物料名称,u.物料规格,
coalesce(a.入仓日期,b.出仓日期) as 入仓日期,isnull(a.入仓数量,0) as 入仓数量,
coalesce(a.入仓日期,b.出仓日期) as 出仓日期,isnull(b.出仓数量,0) as 出仓数量
into #a
from .......
and (入仓日期=a.入仓日期 or 出仓日期=a.出仓日期)
------------------------------------------------------ 应为:
and (入仓日期<=a.入仓日期 or 入仓日期<=a.出仓日期 or 出仓日期<=a.入仓日期
or 出仓日期<=a.出仓日期)
select u.物料编号,u.物料名称,u.物料规格,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.出仓日期)
) as 存仓数
from #a as a