文章说明:根据成绩表,对每个学生的成绩数据进项行转列操作,最后每行显示每个学生的各科成绩。 以下是行转列的各个步骤操作。 1、创建学生信息,课程,成绩三张表 CREATE TABLE TB_STUDENT( STUDENTID VARCHAR2(10) PRIMARY KEY, STUNAME VARCHAR2(50), SE

文章说明:根据成绩表,对每个学生的成绩数据进项行转列操作,最后每行显示每个学生的各科成绩。

以下是行转列的各个步骤操作。

1、创建学生信息,课程,成绩三张表

CREATE TABLE TB_STUDENT(

STUDENTID VARCHAR2(10) PRIMARY KEY,

STUNAME VARCHAR2(50),

SEX VARCHAR2(8),

AGE NUMBER(5)

);

CREATE TABLE TB_COURSE(

COURSEID VARCHAR2(10) PRIMARY KEY,

COURSENAME VARCHAR2(10),

TEACHER VARCHAR2(10)

);

CREATE TABLE TB_SCORE(

SCOREID VARCHAR2(10) PRIMARY KEY,

COURSEID VARCHAR2(10),

STUDENTID VARCHAR2(10),

GRADE NUMBER(10)

);

2、给三张表插入相应的数据

INSERT INTO TB_STUDENT(STUDENTID,STUNAME,SEX,AGE) VALUES('20141101','SIM','BOY',22);

INSERT INTO TB_STUDENT(STUDENTID,STUNAME,SEX,AGE) VALUES('20141102','MARY','GIRL',22);

INSERT INTO TB_STUDENT(STUDENTID,STUNAME,SEX,AGE) VALUES('20141103','SILLY','GIRL',22);

INSERT INTO TB_STUDENT(STUDENTID,STUNAME,SEX,AGE) VALUES('20141104','ALICE','GIRL',22);

INSERT INTO TB_STUDENT(STUDENTID,STUNAME,SEX,AGE) VALUES('20141105','SAM','BOY',22);

insert into tb_course(COURSEID,coursename,teacher) VALUES('1001','MATH','SA');

insert into tb_course(COURSEID,coursename,teacher) VALUES('1002','ENGLISH','ALICE');

insert into tb_course(COURSEID,coursename,teacher) VALUES('1003','JAVA','BB');

INSERT INTO TB_SCORE(SCOREID,COURSEID,STUDENTID,GRADE) VALUES('10001','1001','20141101',99);

INSERT INTO TB_SCORE(SCOREID,COURSEID,STUDENTID,GRADE) VALUES('10002','1001','20141102',88);

INSERT INTO TB_SCORE(SCOREID,COURSEID,STUDENTID,GRADE) VALUES('10003','1001','20141103',77);

INSERT INTO TB_SCORE(SCOREID,COURSEID,STUDENTID,GRADE) VALUES('10004','1001','20141104',98);

INSERT INTO TB_SCORE(SCOREID,COURSEID,STUDENTID,GRADE) VALUES('10005','1001','20141105',96);

INSERT INTO TB_SCORE(SCOREID,COURSEID,STUDENTID,GRADE) VALUES('10006','1002','20141101',99);

INSERT INTO TB_SCORE(SCOREID,COURSEID,STUDENTID,GRADE) VALUES('10007','1002','20141103',99);

INSERT INTO TB_SCORE(SCOREID,COURSEID,STUDENTID,GRADE) VALUES('10008','1002','20141104',99);

INSERT INTO TB_SCORE(SCOREID,COURSEID,STUDENTID,GRADE) VALUES('10009','1003','20141102',99);

INSERT INTO TB_SCORE(SCOREID,COURSEID,STUDENTID,GRADE) VALUES('10010','1003','20141105',99);

插入后的数据结果如下:

STUDENTID STUNAME SEX AGE

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

20141101 SIM BOY 22

20141102 MARY GIRL 22

20141103 SILLY GIRL 22

20141104 ALICE GIRL 22

20141105 SAM BOY 22

COURSEID COURSENAME TEACHER

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

1001 MATH SA

1002 ENGLISH ALICE

1003 JAVA BB

SCOREID COURSEID STUDENTID GRADE

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

10001 1001 20041101 99

10002 1001 20041102 88

10003 1001 20041103 77

10004 1001 20041104 98

10005 1001 20041105 96

10006 1002 20041101 99

10007 1002 20041103 99

10008 1002 20041104 99

10009 1003 20041102 99

10010 1003 20041105 99

3、对数据进行行转列操作

select g.studentid 学号,(select stu.stuname from tb_student stu where stu.studentid=g.studentid) AS 姓名,

sum(decode(g.courseid,'1001',grade,0)) 数学,

sum(decode(g.courseid,'1002',grade,0)) 英语,

sum(decode(g.courseid,'1003',grade,0)) java

from tb_score g

group by g.studentid

order by g.studentid;

说明:decode函数除了可以进行数据匹配以外,还可以进行行转列的功能

decode函数格式:decode(column,if1,then1,defalut)

表示列如果满足if1的条件,就显示then1的内容,不满足就显示default的值!

sum(decode(...))是对decode返回的数据进行累加

4、通过上面的查询,最后显示的查询结果如下

学号 姓名 数学 英语 JAVA

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

20141101 SIM 99 99 0

20141102 MARY 88 0 99

20141103 SILLY 77 99 0

20141104 ALICE 98 99 0

20141105 SAM 96 0 99

以上是通过oracle的decode函数进行的行转列操作,初次写博文,多多指教!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

decode函数换成mysql的函数_Oracle—decode函数行转列相关推荐

  1. activiti5.9 mysql_Activiti5.9换成MySQL数据库

    Activiti5.9默认的数据库是db,可是我们项目中运用的是mysql,那只好把db换成mysql 步骤: 1.下载activiti-5.9.zip  2.解压activiti-5.10.zip并 ...

  2. R语言rev函数对数据对象(向量、dataframe通过行或者列)反序实战

    R语言rev函数对数据对象(向量.dataframe通过行或者列)反序实战 目录 R语言rev函数对数据对象(向量.dataframe通过行或者列)反序实战

  3. oracle列转行 多个字段_Oracle: Oracle行转列、列转行的Sql语句总结

    例子原型: select bkg_num,shpr_cde from CD_XLS_UPLOAD_DETAIL where cd_xls_upload_uuid='392' ; 运行结果如下: 一.多 ...

  4. Oracle学习总结(4)——MySql、SqlServer、Oracle数据库行转列大全

    MySql行转列 以id分组,把name字段的值打印在一行,逗号分隔(默认) select CustomerDrugCode,group_concat(AuditItemName) from noau ...

  5. oracle sql now函数,SQL Server,MySQL,Oracle,PostgreSQL中常用函数用法(1)日

    练习使用Hibernate没有用MySQL数据库,而是用了前不久接触的PostgreSQL,由于不同的数据对于相同的操作有各自的函数,MySQL的date_format(),在PostgreSQL中是 ...

  6. discuz的ajax,discuz分页函数改成基于jqueryd的ajax分页函数

    /** *AJAX分页 *$num 为总共的条数   比如说这个分类下共有15篇文章 *$perpage为每页要显示的条数 *$curpage为当前的页数 *$url为请求路径, *$obj为html ...

  7. mysql有什么好用的小函数_盘点MySQL中比较实用的函数

    之前小编在工作中遇到一些处理数据的问题,例如完成日期格式化,获取几天后的时间,生成指定格式的编码等问题,这时候小编经常会写一大堆逻辑代码来进行处理,还自己感觉自己很流弊的样子,后来却发现同事遇到相同的 ...

  8. linux mysql换成_把 SQL Server 迁移到 Linux?不如换成 MySQL

    (点击上方公众号,可快速关注) 英文:Tony Branson 译者:Linux中国 链接:linux.cn/article-8073-1.html 最近几年,数量庞大的个人和组织放弃 Windows ...

  9. php html转成数组,PHP_php将HTML表格每行每列转为数组实现采集表格数据的方法,本文实例讲述了php将HTML表格每 - phpStudy...

    php将HTML表格每行每列转为数组实现采集表格数据的方法 本文实例讲述了php将HTML表格每行每列转为数组实现采集表格数据的方法.分享给大家供大家参考.具体如下: 下面的php代码可以将HTML表 ...

最新文章

  1. 罗永浩力荐,丁磊豪送的学习神器:手机查词真不如这支AI词典笔?
  2. 浅析那些你不知道的提升企业网站转化率的SEO优化技巧 !
  3. scala基础语法:for/while/do...while/
  4. 模式对话框与非模式对话框的区别2
  5. 软件工程结构化建模的方法和工具_软件工程系列-结构化设计方法2
  6. 基础编程题目集 6-4 求自定类型元素的平均 (10 分)
  7. java质因数算法_Java实现的质因数分解操作示例【基于递归算法】
  8. AF_INET是什么?
  9. Js显示Struts2中的内容之escape和escapeHtml
  10. kodi教程_KODI添加电视直播+修改台标教程
  11. Qt_QPushButton 原生按钮长按
  12. 青龙面板-快手极速版(每天3块脚本)(废-已不能使用)
  13. 先试试这一招,再决定是否要撬开拉杆箱的密码锁——巧开密码锁
  14. Adobe Acrobat的安装时出现:服务print spooler启动失败,请确认您有足够权限启动系,打印机print spooler系统服务不能正常启用解决办法
  15. LSC LensShading Correct
  16. 【Win】KMS 激活命令记录
  17. Python基于PHP+MySQL的个人网页设计与实现
  18. Python爬取‘跌妈不认’股票数据,绘制可视化图
  19. Vue动态赋值video视频
  20. 多张图片合并一张图片,在中间添加文字

热门文章

  1. 能量是财富的源泉,给予是财富的表现形式
  2. 【nest】nest结合typeorm基本使用
  3. 第一颗国产 HDMI2.0 至带音频的四端口 LVDS 芯片 LT6211UX
  4. Zemax光学设计(十四) —— 一些补充知识(不定时更新)
  5. 用友财务软件常见问题维护
  6. windows 实用小技巧(隐身文件夹、官网下载win10、沙盒、数据恢复)
  7. curl php 不直接输出,php – 使用cUrl时没有输出
  8. 什么是语音聊天软件源码,语音直播间礼物如何开发
  9. ENVI实验教程(1)熟悉ENVI遥感图像处理基本操作
  10. JS比较常用的隔行换色和获取焦点以及失去焦点效果