读书人

怎么统计各仓库的分库存

发布时间: 2012-03-18 13:55:38 作者: rapoo

如何统计各仓库的分库存
有4个表
一个销售单表,字段如下(这个表的主键 销售单编号 是下个表的外键)
销售单编号 存放仓库
1 北仓
2 南仓
3 南仓
4 北仓
一个销售详情表,字段如下
销售单编号 产品编号 数量
1 0001 2
1 0002 4
2 0002 3
3 0001 2
4 0001 5

一个进货单表,字段如下(这个表的主键 进货单编号 是下个表的外键)
进货单编号 存放仓库
1 北仓
2 南仓
3 南仓
4 北仓
一个进货表,字段如下
进货单编号 产品编号 数量
1 0001 5
1 0002 8
2 0002 12
3 0001 6
4 0001 7
请问,如何根据以上数据统计出各仓库的各种产品的最后库存


[解决办法]
假设销售单表与进货单表一致
select a.进货单编号,a.存放仓库,b.产品编号,sum(b.数量)
from 进货单表 a left join
(select * from 进货表 union all select 销售单编号,产品编号,数量*(-1) from 销售详情表)
b
group by a.进货单编号,a.存放仓库
[解决办法]
--用union all最简单


select T.存放仓库, T.产品编号,sum(num) as 库存数量

from (
SELECT a.存放仓库, b.产品编号, b.数量 as num
FROM 进货单表 AS a INNER JOIN 进货详情表 AS b ON a.进货单编号 = b.进货单编号

union all

SELECT C.存放仓库, d.产品编号, d.数量*(-1) AS num
FROM 销售单表 AS C INNER JOIN 销售详情表 AS d ON C.销售单编号 = d.销售单编号

) as T

GROUP BY T.存放仓库, T.产品编号;

读书人网 >Access

热点推荐