ITPub博客

首页 > 数据库 > Oracle > Oracle的pivot与unpivot 学习(一)

Oracle的pivot与unpivot 学习(一)

原创 Oracle 作者:hhfxl2009 时间:2018-03-14 00:22:26 0 删除 编辑

今天解答问题的总结

table:score(学号,语文,数学,英语,化学)


学号 语文 数学 英语 化学
1 60 90 80 55
2 88 66 77 89

result:score>=80:优秀,60-79:及格,<=59:不及格


学号 语文 数学 英语 化学
1 及格 优秀 优秀 不及格
2 优秀 及格 及格 优秀

实现方法之一:

select * from (
with tt as (select * from score unpivot (cj for kc in ("语文","数学","英语","化学")))

select "学号",kc,

(case when cj>=80 then '优秀' when cj>=60 then '及格' else '不及格' end) cj 

--decode(sign(cj-80),0,'优秀',1,'优秀',-1,decode(sign(cj-60),0,'及格',1,'及格','不及格')) cj

from tt)

pivot (max(cj) for kc in ('语文' 语文,'数学' 数学,'英语' 英语,'化学' 化学))

******通过以上学习到pivot与unpivot之间的相互转换

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31525499/viewspace-2151827/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2018-03-14

  • 博文量
    1
  • 访问量
    1601