前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle行转列,pivot函数和unpivot函数

Oracle行转列,pivot函数和unpivot函数

作者头像
overme
发布2022-01-17 08:14:09
8030
发布2022-01-17 08:14:09
举报
文章被收录于专栏:数据开发笔记

Oracle

测试数据

行转列

以下一般是行转列的正常需求:

要完成该需求,可以用两种方法

一是:CASE WHEN+GROUP BY

二是PIVOT函数

我们用第二种

代码语言:javascript
复制
SELECT *
FROM TEST_PIVOT 
PIVOT(SUM(SCORE)
FOR COURSE IN('英语','数学','语文'))B

这些中文字段名比较刺眼,王五的 英语列和 数学列也为空不好看 我们这边强壮下sql

代码语言:javascript
复制
SELECT NAME,
NVL(ENGLISH,0) AS ENGLISH,
NVL(MARTH,0) AS MARTH,
NVL(LANGUAGES,0) AS LANGUAGES
FROM TEST_PIVOT 
PIVOT(SUM(SCORE)
FOR COURSE IN('英语' AS ENGLISH ,'数学' AS MARTH,'语文' AS LANGUAGES))

为什么聚合函数用的是SUM原因是要看具体的逻辑,如果李四的语文补考了一次,不同的聚合函数代表不同的逻辑:

列转行

要完成该需求,可以用两种方法

一是:UNION ALL

二是UMPIVOT函数

我们用第二种

代码语言:javascript
复制
SELECT name,COURSE,SCORE
FROM TEST_PIVOT1 T 
UNPIVOT(SCORE FOR COURSE IN(ENGLISH,MARTH,LANGUAGES))

本站文章除注明转载/出处外,均为本站原创,转载前请务必署名,转载请标明出处 最后编辑时间为: 2021/05/12 14:15:25

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/05/12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 行转列
  • 列转行
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档