一、    列    转    行

create table STU_ROW2COL

(

id      VARCHAR2(10),

intname VARCHAR2(10),

subject VARCHAR2(20),

grade   NUMBER

)

insert into stu_row2col (ID, INTNAME, SUBJECT, GRADE) values ('1', 'ZORRO', '语文', 70);

insert into stu_row2col (ID, INTNAME, SUBJECT, GRADE) values ('2', 'ZORRO', '数学', 80);

insert into stu_row2col (ID, INTNAME, SUBJECT, GRADE) values ('3', 'ZORRO', '英语', 75);

insert into stu_row2col (ID, INTNAME, SUBJECT, GRADE) values ('4', 'SEKER', '语文', 65);

insert into stu_row2col (ID, INTNAME, SUBJECT, GRADE) values ('5', 'SEKER', '数学', 75);

insert into stu_row2col (ID, INTNAME, SUBJECT, GRADE) values ('6', 'SEKER', '英语', 60);

insert into stu_row2col (ID, INTNAME, SUBJECT, GRADE) values ('7', 'BLUES', '语文', 60);

insert into stu_row2col (ID, INTNAME, SUBJECT, GRADE) values ('8', 'BLUES', '数学', 90);

insert into stu_row2col (ID, INTNAME, SUBJECT, GRADE) values ('9', 'PG', '数学', 80);

insert into stu_row2col (ID, INTNAME, SUBJECT, GRADE) values ('10', 'PG', '英语', 90);

SQL>  select t.* from stu_row2col t ;

ID         INTNAME    SUBJECT                   GRADE

---------- ---------- -------------------- ----------

11         ZORRO      语文                         77

1          ZORRO      语文                         70

2          ZORRO      数学                         80

3          ZORRO      英语                         75

4          SEKER      语文                         65

5          SEKER      数学                         75

6          SEKER      英语                         60

7          BLUES      语文                         60

8          BLUES      数学                         90

9          PG         数学                         80

10         PG         英语                         90

想要实现行专列, 就是输出结果是这样的:

SQL>  select * from ( select t.intname,t.subject,t.grade from stu_row2col t)

pivot(sum(grade) for subject in ('语文' 语文,'数学' 数学,'英语' 英语))  ;

INTNAME            语文         数学         英语

---------- ---------- ---------- ----------

SEKER              65         75         60

BLUES              60         90

PG                            80         90

ZORRO             147         80         75

二、    行    转    列

创建一个视图:

create or replace view stu_col2row as

select "INTNAME","语文","数学","英语" from ( select t.intname,t.subject,t.grade from stu_row2col t) pivot(sum(grade) for subject in ('语文' 语文,'数学' 数学,'英语' 英语));

SQL>  select INTNAME 姓名,km 科目, fs 分数 from stu_col2row unpivot(fs for km in(语文,数学,英语));

姓名       科目         分数

---------- ---- ----------

SEKER      语文         65

SEKER      数学         75

SEKER      英语         60

BLUES      语文         60

BLUES      数学         90

PG         数学         80

PG         英语         90

ZORRO      语文         70

ZORRO      数学         80

ZORRO      英语         75

oracle unpivot 索引_oracle 11g 行列转换之unpivot、pivot相关推荐

  1. oracle unpivot 索引_oracle 11g中的pivot和unpivot转换操作

    对于pivot和unpivot这个Oracle 11g的新功能一直就想总结一下,正好赶上论坛中有很多人会提问相关的问题,于是利用空闲时间翻译了一篇相关的网络文章.链接如下: ITPuber:Luise ...

  2. oracle unpivot 索引_Oracle 行转列pivot 、列转行unpivot 的Sql语句总结

    这个比较简单,用||或concat函数可以实现 select concat(id,username) str from app_user select id||username str from ap ...

  3. oracle unpivot 索引_oracle pivot 和 unpivot 函数的使用

    pivot的格式 select from ( inner_query) pivot(aggreate_function for pivot_column in ( list of values)) o ...

  4. oracle in 索引_Oracle 性能优化总结

    作者 | 帅性而为1号 出处 : https://blog.csdn.net/zhushuai1221/article/details/51740846 网上关于SQL优化的教程很多,但是比较杂乱.近 ...

  5. rono在oracle的作用_Oracle 11g各种服务作用以及哪些需要开启

    Windwos server 2012 R2上成功安装Oracle 11g后共有7个服务,如果全局数据库名为orcl,则Oracle服务分别为 Oracle ORCL VSSWriter Servic ...

  6. oracle 手机客户端_Oracle 11g客户端

    Oracle 11g客户端是一款非常专业的数据库软件,它可以帮助企业管理企业信息.更深入地洞察业务状况并迅速自信地做出调整以适应不断变化的竞争环境.所以有需要的用户欢迎在WWW.11684.COM 下 ...

  7. oracle split去逗号,行列转换 转载

    1.针对  '1','2','3','4','5'(逗号在字符串外面) [sql] view plaincopyprint? SQL> SELECT COLUMN_VALUE  FROMTABL ...

  8. 用ORACLE分析函数实现行列转换

    摘 要 对数据库中的数据用SQL实现行列转换,不但需要编写复杂的程序代码,还需要编写存储过程.若引入ORACLE中的分析函数则会使该过程简便很多.首先找出表中所有关键字的属性个数的最大值,设为n,其次 ...

  9. oracle非常量不能用于privot_Oracle 行列转换函数pivot、unpivot的使用(二)

    一.行转列pivot 关键函数pivot,其用法如下 pivot(聚合函数 for 列名 in(类型)) select * from table_name pivot(max(column_name) ...

最新文章

  1. enterText与typeText
  2. 李丽娟c语言第四版教师书_来,把自学C语言经历的那些苦,都踩在脚下
  3. iOS实现自定义的弹出视图(popView)
  4. shell swt 样式_swt shell设置窗口位于屏幕中间
  5. [GO语言基础] 三.变量声明、数据类型、标识符及编程练习12题
  6. HDU 4283 You Are the One
  7. ajax技术怎么应用程序,利用AJAX技术开发应用程序.pdf
  8. 最小生成树(hdu1233还是畅通工程)
  9. 爬虫养成记 - urllib2的调试和错误处理
  10. 敏捷转型历程 - Sprint3 一团糟的演示会
  11. 定义工作,解读自我——IT帮2019年2月线下活动回顾
  12. 智能优化算法:人工电场优化算法-附代码
  13. 在小程序中如何使用svg图标
  14. 群晖服务器创建文件夹,群晖Synology 创建共享文件夹视频图文教程
  15. 如何评价光伏电站的运维能力
  16. 小学期破防:BIT计科大二小学期的个人见解以及建议
  17. 没有基于鸿蒙系统的app吗,华为鸿蒙操作系统为什么没有应用到手机?
  18. 把笔记本改造成无线路由器 —— 手机抓包牛刀小试
  19. 第25届ccf-csp认证赛后
  20. HDOJ 2545 树上战争

热门文章

  1. Dell XP版本在非Dell机子上的激活问题
  2. 《Sibelius 脚本程序设计》连载(五) - 1.2 编辑第一个插件
  3. DWR的学习文档(Hello World,类型转换,Spring,Annotation)
  4. mysql存储过程报错_MySQL存储过程错误No data - zero rows fetched, selected, or processed
  5. centos6 进入命令行_CentOS 6.x误删libc.so.6,紧急恢复
  6. [蓝桥杯][算法提高VIP]贪吃的大嘴(多重背包)
  7. oracle sql序列,SQL server 和Oracle 序列
  8. 报数退圈问题(C语言)
  9. aircv 安装_Python 通过截图匹配原图中的位置(opencv)实例
  10. mysql c 更新 数据_Mysql:如果数据存在则更新,不存在则插入