当前位置导航:炫浪网>>网络学院>>编程开发>>Oracle教程

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筛选一下。就是生成后不能按照上面的顺序排列

相关内容
赞助商链接