Oracle   发布时间:2022-05-17  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Oracle的行转列大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

一,简单的行转列

做项目的时候碰到一个需求,老板有三个门店,每个门店每天都有金额入账,现在想展示某一段时间每个门店的收入情况

原表的的结构

这里在sql里面处理就比较方便,只需用到sql的decode(),和sum()函数就可以实现

SELEct d.md,sum(DECODE(rq,'星期一',je,null)) as monday,'星期二',null)) as tuesday,'星期三',null)) as Wednesday,'星期四',null)) as thursday,'星期五',null)) as frIDay,'星期六',null)) as saturday,'星期天',null)) as Sunday
from TESTHZL d 
GROUP BY d.md

效果

一小点扩展,如果需要统计这段时间的总收入

select t.*,t.monday+t.tuesday+t.Wednesday+t.thursday+t.frIDay+t.saturday+t.Sunday count from (
SELEct d.md,null)) as Sunday
from TESTHZL d 
GROUP BY d.md)t

很简单就实现了

二,思与扩展

现在假如我们有一个需求,在某一年级,有三个班级,每个班级取总分前三的尖子生,比较每个班级的情况(与行转列无关的就不涉及了,例如怎么取班级分数前三的尖子生)

原始表字段结构

数据格式

SELECT class,max(decode(r,1,student,null)) student1,count,null)) count1,chinese,null)) chinese1,2,null)) student2,null)) count2,null)) chinese2,3,null)) student3,null)) count3,null)) chinese3
from (
select t.*,row_number() 
over(partition by class order by student ) r 
from CLASS_topstuDENT t
)
group by class

主要是max() over (PARTITION BY ...) 这个分析函数的应用

大佬总结

以上是大佬教程为你收集整理的Oracle的行转列全部内容,希望文章能够帮你解决Oracle的行转列所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: