在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
有一张工资表SALARY如下, (NO 员工编号 ,MONEY 工资) NO NAME ITEM MONEY 求每个人的总工资以及所有人的总工资,结果如下表: 结果如下: 姓名 工资 补贴 奖金 总工资 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的查询中使用; 下面再看一个实例 有一张表test 如下, (NO 学生编号 ,cj 成绩) NO name KM CJ 写了以下语句来算每项个科目的总分, 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多条件统计查询的简单方法 等。有什么问题可以随时留言,欢迎大家交流讨论。 |
请发表评论