仓库管理sql 语言查询语句实现

数据库有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
现在需要查询出“目录”中各个器材的入库量、出库量、以及库存量。“库存表”中的库存为实际库存数量。
用一句sql语言实现以下显示效果:
编码 名称 入库量 出库量 库存量
002 用户盒 100 100 200
003 膨胀螺丝 100 100 200
004 连接线 100 100 200
006 -7线 0 0 53
007 放大器 0 0 0

我自己做了一个总是报错:
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 (select 编码,数量,库房 from 入库明细 uion select 编码, 数量 * (-1) as 数量 , 库房 from 出库明细) aa on 库存.仓库 = aa.库房 and 仓库.编码 = aa.编码 group by 编码, 名称

以下是报错提示:
服务器: 消息 156,级别 15,状态 1,行 1
在关键字 'select' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: ')' 附近有语法错误。

Case 语法错误:
应为:
case aa.数量 when aa.数量>0 then aa.数量 else 0 end
另外:
库存生成,如果想这个做法是不行的,告诉你一个思路:
基础表应有:入库单、出库单;
账簿应有:数量帐、明细账、金额帐;
然后使用存储过程:实现登帐;
最后:在登帐后的账簿表中进行查询!
云驰软件!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-24
子查询中
……
(select 编码,数量,库房 from 入库明细 uion select 编码, 数量 * (-1) as 数量
……
union拼错了

改一下再看看,还有问题再追
第2个回答  2012-12-24
关于多表联合查询的sql语句,最好是给每个字段前面加上表名,比如:目录.编码 ;因为可能有重复字段。
相似回答