/*在实际使用sql工作中总会碰到将某一列的值放到标题中显示.就是总说的行列转换或者互换.

比如有如下数据:

ID NAME KECHENG CHENGJI

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

1 a 语文 80

2 a 数学 70

3 b 语文 40

4 b 数学 100

5 c 语文 90

6 c 数学 92

那末我要求显示的结果是:

NAME YUWEN SHUXUE

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

a 80 70

也就是说把课程这一列放到行上显示.把成绩按照课程分配到相对应的行.

我只介绍2中简单易用的方法,使用游标或者建立临时表的方法就不介绍了.效率很慢,不易理解.

首先建立表:*/create table fzq

(

id varchar(2),

name varchar(10),

kecheng varchar(20),

chengji varchar(3)

);--插入数据:

insert into fzq values (‘1‘,‘a‘,‘语文‘,‘80‘);

insert into fzq values(‘2‘,‘a‘,‘shuxue‘,‘70‘);

insert into fzq values (‘3‘,‘b‘,‘yuwen‘,‘40‘);

insert into fzq values (‘4‘,‘b‘,‘shuxu‘,‘100‘);

insert into fzq values (‘5‘,‘c‘,‘yuwen‘,‘90‘);

insert into fzq values (‘6‘,‘c‘,‘shuxu‘,‘92‘);/*首先使用union.如果课程这列有多个值,那么脚本的代码就很长了.*/

select name,sum(yuwen) yuwen,sum(shuxue) shuxue from(select name,chengji yuwen,‘0‘ shuxue fromfzqwhere kecheng=‘yuwen‘unionselect name,‘0‘yuwen,chengji shuxuefromfzqwhere kecheng=‘shuxue‘) aaa

group BY name;/*执行结果:

NAME YUWEN SHUXUE

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

a 80 70

b 40 100

c 90 92*/

/*其次是用case.这种方法代码比较短.适合列值很多的情况.*/

select name, sum(case kecheng when ‘yuwen‘then chengji end) yuwen,

sum(case kecheng when ‘shuxue‘then chengji end) shuxuefromfzq

group by name;/*执行结果:

NAME YUWEN SHUXUE

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

a 80 70

b 40 100

c 90 92

所有例子在oracle中测试,sql server没有测试,请根据实际情况修改

如果有更好的方法,欢迎交流.*/

oracle表行列权限,Oracle行列互换 横表和纵表相关推荐

  1. oracle如何撤销权限,Oracle授予/撤销权限

    本Oracle教程解释了如何使用授予和撤销权限的语法和示例. 可以在Oracle中的各种数据库对象上使用GRANT和REVOKE授予/撤销权限. 我们首先看看如何授予和撤消对表的权限,然后再看看如何授 ...

  2. oracle 取消exp权限,oracle 复制账号权限oracle11gexp导出问题:部分表导不出来

    在oracle导出表的命令exp时候发现一个问题,就是部分表完全的导不oracle账号出来,经检查发现只要是表为空的都会导不出来. 在如下表中发现segment_created都为NO的是导不出来的, ...

  3. oracle常用角色权限,Oracle角色、权限的一些常用视图 - 一夜寒江

    Oracle角色.权限的一些常用视图 ORACLE中数据字典视图分为3大类 , 用前缀区别,分别为:USER,ALL 和 DBA,许多数据字典视图包含相似的信息. USER_*: 有关用户所拥有的对象 ...

  4. oracle如何查询权限,Oracle 权限查询

    查看当前用户权限: SQL> select * from session_privs; 查询某个用户被赋予的系统权限. Select * from user_sys_privs; 或者: sel ...

  5. oracle收回删除权限,oracle 授予权限和收回权限 grant和revoke 以及角色的创建 删除...

    --select * from dba_users; 查询数据库中的所有用户 --alter user TEST_SELECT account lock; 锁住用户 --alter user TEST ...

  6. oracle 查看scott权限,Oracle创建表空间、创建用户以及授权、查看权限 、scott解锁...

    1, 创建临时表空间 CREATETEMPORARYTABLESPACE test_temp TEMPFILE'C:\oracle\product\10.1.0\oradata\orcl\test_t ...

  7. oracle设置导出权限,Oracle 创建 删除 用户 导出 导入 分配权限

    //创建临时表空间 create temporary tablespace ezit_temp tempfile 'C:/Oracle/lenovo/oradata/orcl/ezit_temp01. ...

  8. oracle用户常用权限,Oracle用户权限分配的具体方法【常用财务软件使用教程】

    Oracle用户权限分配的具体方法 这里我们将介绍Oracle用户权限分配和Oracel从服务器导出数据的方法,希望能对大家有所帮助. 对于Oracle用户权限分配,很多人觉得不是很困难,但是要做好O ...

  9. oracle如何增加权限,oracle增加用户及权限

    删除用户:例如创建了一个用户 A,要删除它可以这样做connect sys/密码 as sysdba;drop user A cascade;//就这样用户就被删除了用户修改密码,解锁ALTER US ...

最新文章

  1. 从芯片到AI智能芯片,一文了解它的前世今生
  2. 随机验证码 php
  3. 重要接口—Cloneable接口
  4. (二) shiro入门 :输出 hello world
  5. SOA (面向服务的架构)
  6. 前端构建工具 Gulp.js 上手实例
  7. Vue的条件渲染和对象渲染
  8. 全站HTTPS底层实现原理
  9. 脉冲列输入型脉冲比较数字伺服系统的原理图
  10. paip.图形化编程工具VS WF与JBPM的比较
  11. 在售后技术服务里,Kubernetes到底是什么? | 凌云时刻
  12. 51单片c语言编程实例,51单片机C语言编程实例
  13. 自用软件系列之:迅雷X ,无广告,纯净版
  14. 分数加减乘除混合运算带答案_分数加减乘除混合运算专项训练
  15. 5.2 BP误差逆传播
  16. niosii spi 外部_niosii 的SPI详解
  17. iPhone开发Swift基础08 加密与安全
  18. 微信扫一扫 扫普通链接二维码打开微信小程序
  19. PHPExcel替代方案PhpSpreadsheet
  20. VGA、HDMI、DP你都懂吗?显示接口大盘点

热门文章

  1. [学习笔记] css中的line-height
  2. Hadoop大数据零基础高端实战培训系列配文本挖掘项目
  3. 为什么要使用Handler
  4. null 与 undefined 的区别
  5. Algs4-1.1.21打印表格
  6. virtualbox 中centOS在不能ssh
  7. 首个生物医疗开放大数据研究中心在沪成立
  8. java的静态内部类
  9. Linux5下DHCP配置
  10. 通过Samba实现Win/Mac访问Linux