SELECT A.进库时间,A.产品代码,B.数量 AS 进库量,C.数量 AS 库存量,D.数量 AS 出库数,E.数量 AS 退货量
FROM
(select 进库时间,产品代码
from 进库表
union
select 库存时间,产品代码
from 库存表
union
select 出库时间,产品代码
from 出库表
union
select 退货时间,产品代码
from 退货表
) as
A left join 进库表 B on B.进库时间=A.进库时间 and B.产品代码=A.产品代码
left join 库存表 C on C.进库时间=A.进库时间 and C.产品代码=A.产品代码
left join 出库表 D on D.进库时间=A.进库时间 and D.产品代码=A.产品代码
left join 退货表 E on E.进库时间=A.进库时间 and E.产品代码=A.产品代码
,产品代码=isnull(a.产品代码,b.产品代码)
,进库量=isnull(进库量,0),库存量=isnull(库存量,0)
,出库数=isnull(出库数,0),退货量=isnull(退货量,0)
from(
select 时间=isnull(进库时间,出库时间)
,产品代码=isnull(a.产品代码,b.产品代码)
,进库量=a.数量,出库数=b.数量
from 进库表 a
full join 出库表 b on a.进库时间=b.出库时间
and a.产品代码=b.产品代码
)a full join(
select 时间=isnull(库存时间,退货时间)
,产品代码=isnull(a.产品代码,b.产品代码)
,库存量=a.数量,退货量=b.数量
from 库存表 a
full join 退货表 b on a.库存时间=b.退货时间
and a.产品代码=b.产品代码
)b on a.库存时间=b.退货时间
and a.产品代码=b.产品代码