Oracle 分类求和实战篇(oracle分类求和)
Oracle数据库支持分类求和功能,支持在查询统计字段时,按照每个分类条件下的求和统计合计结果的功能。下面将以实例的方式,实战演示Oracle分类求和的操作方法。
假设有一个关于进货物料及出货物料的表,表中有三列,列名为:库存类型、物料类型及物料金额,如下:
库存类型|物料类型|物料金额
:–:|:–:|:–:
进货|半成品|200.00
出货|成品|300.00
进货|成品|400.00
出货|半成品|100.00
出货|成品|500.00
我们需要按物料类型统计进货物料金额总和及出货物料金额总和,SQL语句如下:
SELECT
物料类型, SUM(DECODE(库存类型, '进货', 物料金额, 0)) "进货总金额",
SUM(DECODE(库存类型, '出货', 物料金额, 0)) "出货总金额"FROM
表GROUP BY 物料类型;
以上SQL语句中,使用 DECODE 函数来处理不同库存类型对应不同的统计方式,根据库存类型判断求和或者等值 0。
查询结果如下:
物料类型|进货总金额|出货总金额
:–:|:–:|:–:
半成品|200.00|100.00
成品|400.00|800.00
以上示例中,不管是多少行数据,仅计算指定的物料类型的进货物料金额的总和和出货物料金额的总和,实现了我们所需要的求和功能。
在Oracle中,DECODE函数可以实现类似于switch case语句,可以用它实现分类求和。若想计算更多类型的字段,可以采用类似方式多次求和即可,如
SELECT 物料类型,
SUM(DECODE(库存类型, '进货', 物料金额, 0)) "进货总金额", SUM(DECODE(库存类型, '出货', 物料金额, 0)) "出货总金额",
SUM(DECODE(库存类型, '往来', 物料金额, 0)) "往来总金额"FROM 表
GROUP BY 物料类型;
总之,Oracle 提供的分类求和功能可以帮助用户快速准确地实现复杂的查询统计,本篇文章指导用户实现按照物料类型,进行分类求和统计的操作。