Case语句在进销存系统的应用
添加时间: 2008-4-23 22:41:21 作者: Oracle指导 阅读次数:11 来源: http://www.d9soft.com
配件编号: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筛选一下。就是生成后不能按照上面的顺序排列.
上下文章:
上一篇文章: Oracle9i到10g,空闲等待事件的变化 下一篇文章: Oracle10gR2自动检查点调整的新特性
相关文章:
相关软件:

