库存管理sql语言求助,在线等!
本帖最后由 redstar66 于 2012-12-21 15:02:06 编辑 数据库有5个表
目录:
编码 名称
002 用户盒
003 膨胀螺丝
004 连接线
006 -7线
007 放大器
库存:
编码 名称 数量 库房
002 用户盒 1210 仓库1
004 连接线 1088 仓库1
003 膨胀螺丝 1100 仓库1
006 -7线 10001 仓库1
003 膨胀螺丝 1200 仓库2
入库单:
入库编号 供应商 库房 操作员 入库日期
00000001 四川广电网络 仓库1 系统管理员 2012-12-18
00000002 四川广电网络 仓库1 系统管理员 2012-12-18
00000003 南充广电网络 仓库1 系统管理员 2012-12-18
入库明细:
入库编号 编码 名称 数量 库房
00000001 002 用户盒 1000 仓库1
00000001 003 膨胀螺丝 1000 仓库1
00000001 004 连接线 1000 仓库1
00000002 002 用户盒 100 仓库1
00000002 003 膨胀螺丝 100 仓库1
00000003 002 用户盒 1 仓库1
00000003 006 -7线 1 仓库1
00000001 006 -7线 10000 仓库1
出库单
出库编号 库房 施工班组 出库日期
00000001 仓库1 施工二组 2012-12-18
00000002 仓库1 施工二组 2012-12-18
00000003 仓库1 施工二组 2012-12-18
00000004 仓库1 施工三组 2012-12-18
00000005 仓库1 施工二组 2012-12-20
00000006 仓库1 施工二组 2012-12-20
00000007 仓库1 施工二组 2012-12-20
出库明细:
出库编号 编码 名称 数量 库房
00000001 002 用户盒 2 仓库1
00000001 004 连接线 3 仓库1
00000001 004 连接线 3 仓库1
00000002 004 连接线 1 仓库1
00000002 002 用户盒 2 仓库1
00000003 002 用户盒 1 仓库1
00000005 004 连接线 1 仓库1
00000006 004 连接线 1 仓库1
00000007 002 用户盒 1 仓库1
00000004 002 用户盒 9 仓库1
00000004 004 连接线 8 仓库1
现在需要查询出“目录”中各个器材在 “仓库1”中,日期为‘2012-12-18’,这一天的入库量、出库量、以及库存量
达到以下显示效果:
编码 名称 入库量 出库量 库存量
002 用户盒 100 100 200
003 膨胀螺丝 100 100 200
004 连接线 100 100 200
006 -7线 0 0 53
007 放大器 0 0 0
[解决办法]
;with aa
as(
select 编码, 数量 , 库房 from 入库明细 uion
select 编码, 数量 * (-1) as 数量 , 库房 from 出库明细)
select 库存.编码 , 库存.名称 , sum(case when aa.数量>0 then aa.数量 else 0 end) as 入库量,
sum(case when aa.数量<0 then aa.数量 else 0 end) as 出库量 , sum(库存.数量) + sum(aa.数量) as 库存量 from 库存 join aa on 库存.仓库 = aa.库房 and 仓库.编码 = aa.编码
[期初结存] = MAX(ISNULL(B.数量,0))
+ SUM(ISNULL([出库量_之后],0)) - MAX(ISNULL([入库量_之后],0))
+ SUM(ISNULL([出库量_当天],0)) - MAX(ISNULL([入库量_当天],0))
+ SUM(ISNULL([出库量_之前],0)) - MAX(ISNULL([入库量_之前],0)),