计算机等级考试 水平考试 微软认证 思科认证 Oracle认证 Linux认证

外语类四 六 级 商务英语 公共英语 GRE GMAT 托 福 雅 思

资格类:公 务 员 报 关 员 司法考试 导游考试 会计职称 注册会计师

学历类:考研入学 自学考试 成人高考 法律硕士 MBA/MPA

首页>>Oracle认证>>:Case语句在进销存系统的应用

Case语句在进销存系统的应用

问:请教专家一个问题,我想写一个汇总配件出入库明细的SQL语句,以便对库存中的某个配件进行出入库的汇总。以下是需求明细: 
配件编号:0001
配件名称:发动机
期初库存:100
入库一次后,有一条入库记录
配件编号       入库数量
0001             10
出库一次后,有一条出库记录
配件编号       出库库数量
0001              3
现在要汇总出这个配件的出入库明细,样子要这样
配件编号   类别    出/入库数    结余库存
0001        期初     100              100
0001        入库      10              110
0001        出库       3               107
      答:可以先对3张表做一个union的视图,然后使用case判断,根据类别 类别算出结余库存
select id as 商品编码,
       name as 商品名称,
       class 发出类别,
       num as 结余数量 
       from mm 
union
select mn.ID as  商品编码,
       mn.name as 商品名称,
       mn.class 发出类别,
      (mm.num+mn.num) as 结余数量 
       from mn,mm
union
       select nn.id as 商品编码,
       nn.name as 商品名称,
       nn.class 发出类别,
       (mm.num+mn.num-nn.num) as 结余数量 
       from mn,nn,mm 
当然,这是普遍采用的办法,也可以用Case来判断类别后来进行加减运算。
mm,mn,nn三个表的结构都是一样的
ID     INT         编码
Name   Varchar(20) 名称
Num    int         发生数量
Class  Varchar(10) 类别
 
      表中才一条记录,在多记录时可以用where筛选一下。就是生成后不能按照上面的顺序排列


热 点 导 读

 

特 别 推 荐

 

最 新 文 章

 

最 新 文 章

·Oracle冷备份的不完全恢复(上)
·Oracle冷备份的不完全恢复(中)
·Oracle冷备份的不完全恢复(下)
·用ADO.NET访问Oracle9i存储过程(上)
·用ADO.NET访问Oracle9i存储过程(下)

2003-2005 www.51kao.com 考试信息网