oracle横向纵向求和代码实例

 更新时间:2017年10月11日 14:27:17   作者:yaopan1989  
这篇文章主要介绍了oracle横向纵向求和的相关内容,涉及两个实例,具有一定参考价值。需要的朋友可以了解。

有一张工资表SALARY如下, (NO 员工编号 ,MONEY 工资)

NO    NAME     ITEM       MONEY
001    张三        工资        80
001    张三        补贴        86
001    张三        奖金        75
002    李四        工资        78
002    李四        补贴        85
002    李四        奖金        78

求每个人的总工资以及所有人的总工资,结果如下表:

结果如下:

姓名    工资      补贴    奖金    总工资
李四     780       850      780     2410
张三     800       860      750     2410
总计    1580     1710     1530   4820

SQL语句:

SELECT DECODE(GROUPING(NAME), 1, '总计', NAME) 姓名,
SUM(DECODE(ITEM, '工资', MONEY, 0))  工资,
SUM(DECODE(ITEM, '补贴', MONEY, 0))  补贴,
SUM(DECODE(ITEM, '奖金', MONEY, 0))  奖金,
SUM(MONEY)  总工资
FROM  SALARY
GROUP  BY  ROLLUP(NAME);

其中:GROUPING函数接受一列,列值为空返回1,非空返回0,只能在使用ROLLUP或CUBE的查询中使用;
DECODE(ITEM,  '工资',  MONEY, 0) 是指ITME的值与‘工资'比较,如果相等返回MONEY,不等返回0

下面再看一个实例

有一张表test 如下, (NO 学生编号 ,cj 成绩)

NO name KM CJ
001 张三 语文 80
001 张三 数学 86
001 张三 英语 75
002 李四 语文 78
002 李四 数学 85
002 李四 英语 78

写了以下语句来算每项个科目的总分,

select decode(grouping(name),1,'总分',name) 姓名, 
sum(decode(km, '数学',cj,0)) 数学,
sum(decode(km, '英语',cj,0)) 英语, 
sum(decode(km, '语文',cj,0)) 语文,
sum(cj) 总成绩 
from test group by rollup(name)

结果如下:

姓名 数学 英语 语文 总成绩
李四 85  78  78  241
张三 86  75  80  241
总分 171 153 158  482

总结

以上就是本文关于oracle横向纵向求和代码实例的全部内容,希望对大家有所帮助。感兴趣的朋友可以参阅:ORACLE SQL语句优化技术要点解析oracle数据库导入TXT文件方法介绍ORACLE多条件统计查询的简单方法 等。有什么问题可以随时留言,欢迎大家交流讨论。

相关文章

  • Oracle自我补充之trunc()函数的使用方法

    Oracle自我补充之trunc()函数的使用方法

    TRUNC函数为指定元素而截去的日期值。下面通过本文给大家介绍Oracle自我补充之trunc()函数的使用方法,感兴趣的朋友一起看看吧
    2017-06-06
  • Oracle生成单据编号存储过程的实例代码

    Oracle生成单据编号存储过程的实例代码

    Oracle生成单据编号存储过程,在做订单类似的系统都可能会存在订单编号不重复,或是流水号按日,按年,按月进行重新编号。下面给大家分享oracle生成单据编号存储过程,需要的的朋友参考下吧
    2017-04-04
  • 详解Oracle中sqlldr的具体用法

    详解Oracle中sqlldr的具体用法

    这篇文章主要介绍了详解Oracle中sqlldr的用法,SQLLDR可以在极短的时间内加载数量庞大的数据,这是一个非常有用的工具,可用于从多种平面文件格式向Oracle数据库中加载数据,需要的朋友可以参考下
    2023-07-07
  • oracle锁表该如何解决

    oracle锁表该如何解决

    这篇文章主要给大家介绍了关于oracle锁表如何解决的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • ORACLE应用经验(2)

    ORACLE应用经验(2)

    ORACLE应用经验(2)...
    2007-03-03
  • oracle 分页问题解决方案

    oracle 分页问题解决方案

    测试说分页查询貌似不起作用,翻到第4页以后,看到的数据结果都是相同的,此等问题应该如何解决,本文将详细介绍
    2012-11-11
  • db2与oracle的sql语句有什么不同

    db2与oracle的sql语句有什么不同

    Oracle和DB2都是关系型数据库管理系统(RDBMS),但它们的设计理念、特性及性能等方面存在一些显著的差异,本文将详细比较Oracle和DB2,帮助企业和数据库管理员了解这两个系统各自的优势和局限性,并指导用户根据自己的业务需求作出合适的选择
    2024-02-02
  • Oracle case函数使用介绍

    Oracle case函数使用介绍

    这篇文章主要通过实例简要介绍case函数的用法,学习oracle的朋友可以参考下
    2013-09-09
  • Oracle DATABASE LINK(DBLINK)创建与删除方法

    Oracle DATABASE LINK(DBLINK)创建与删除方法

    这篇文章主要介绍了Oracle DATABASE LINK(DBLINK)创建与删除方法,需要的朋友可以参考下
    2016-02-02
  • Oracle删除重复的数据,Oracle数据去重复

    Oracle删除重复的数据,Oracle数据去重复

    这篇文章主要介绍了Oracle删除重复的数据,Oracle数据去重复,需要的朋友可以参考下
    2016-08-08

最新评论