读书人

库存管理sql语言

发布时间: 2013-01-08 14:02:13 作者: rapoo

库存管理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)),

读书人网 >SQL Server

热点推荐