select a.物料名, isnull(b.库存数量,0) '期初数', isnull(c.入库数量,0) '入库数', isnull(d.出库数量,0) '出库数', isnull(b.库存数量,0)+isnull(c.入库数量,0)-isnull(d.出库数量,0) '现存数' from 物料表 a left join (select 物料ID,sum(库存数量) '库存数量' from 盘点表 group by 物料ID) b on a.物料ID=b.物料ID left join (select 物料ID,sum(入库数量) '入库数量' from 入库表 group by 物料ID) c on a.物料ID=c.物料ID left join (select 物料ID,sum(出库数量) '出库数量' from 出库表 group by 物料ID) d on a.物料ID=d.物料ID
物料表 字段
物料ID,物料名
1 ,路由器
2 ,1米网线
3 ,lp鼠标 盘点表/期初表
物料ID,盘点日期,库存数量
1 ,路由器 , 20
2 ,1米网线 , 30
3 ,lp鼠标 , 50 入库表
物料ID,入库数量,入库日期
1 ,10 , 2014-6-22
3 ,5 , 2014-6-23
3 ,10 , 2014-6-25
出库表
物料ID,出库数量,出库日期
1 ,3 , 2014-6-23
2 ,3 , 2014-6-24
3 ,3 , 2014-6-25
1 ,5 , 2014-6-26
1.以上次盘点为本期初始库存,我现在要统计库存,显示以下字段
物料名,期初数,入库数,出库数,现存数 请问这个怎么写SQL?
select a.物料名,
isnull(b.库存数量,0) '期初数',
isnull(c.入库数量,0) '入库数',
isnull(d.出库数量,0) '出库数',
isnull(b.库存数量,0)+isnull(c.入库数量,0)-isnull(d.出库数量,0) '现存数'
from 物料表 a
left join (select 物料ID,sum(库存数量) '库存数量'
from 盘点表
group by 物料ID) b on a.物料ID=b.物料ID
left join (select 物料ID,sum(入库数量) '入库数量'
from 入库表
group by 物料ID) c on a.物料ID=c.物料ID
left join (select 物料ID,sum(出库数量) '出库数量'
from 出库表
group by 物料ID) d on a.物料ID=d.物料ID