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
狼蚁网站SEO优化再看一个实例
有一张表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横向纵向求和代码实例的全部内容,希望对大家有所帮助。感兴趣的朋友可以参阅 、 、 等。有什么问题可以随时留言,欢迎大家交流讨论。
编程语言
- 甘肃哪有关键词排名优化购买方式有哪些
- 甘肃SEO如何做网站优化
- 河南seo关键词优化怎么做电话营销
- 北京SEO优化如何做QQ群营销
- 来宾百度关键词排名:提升您网站曝光率的关键
- 卢龙关键词优化:提升您网站排名的策略与技巧
- 山东网站优化的注意事项有哪些
- 四川整站优化怎样提升在搜索引擎中的排名
- 疏附整站优化:提升网站性能与用户体验的全新
- 海南seo主要做什么工作售后服务要做到哪些
- 荣昌百度网站优化:提升您网站的搜索引擎排名
- 河北seo网站排名关键词优化如何做SEO
- 江西优化关键词排名推广售后保障一般有哪些
- 古浪SEO优化:提升你的网站可见性
- 西藏网站排名优化怎么把网站排名在百度首页
- 如何提升阳东百度快照排名:详尽指南