decode函数换成mysql的函数_Oracle—decode函数行转列
文章说明:根据成绩表,对每个学生的成绩数据进项行转列操作,最后每行显示每个学生的各科成绩。 以下是行转列的各个步骤操作。 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函数行转列相关推荐
- activiti5.9 mysql_Activiti5.9换成MySQL数据库
Activiti5.9默认的数据库是db,可是我们项目中运用的是mysql,那只好把db换成mysql 步骤: 1.下载activiti-5.9.zip 2.解压activiti-5.10.zip并 ...
- R语言rev函数对数据对象(向量、dataframe通过行或者列)反序实战
R语言rev函数对数据对象(向量.dataframe通过行或者列)反序实战 目录 R语言rev函数对数据对象(向量.dataframe通过行或者列)反序实战
- oracle列转行 多个字段_Oracle: Oracle行转列、列转行的Sql语句总结
例子原型: select bkg_num,shpr_cde from CD_XLS_UPLOAD_DETAIL where cd_xls_upload_uuid='392' ; 运行结果如下: 一.多 ...
- Oracle学习总结(4)——MySql、SqlServer、Oracle数据库行转列大全
MySql行转列 以id分组,把name字段的值打印在一行,逗号分隔(默认) select CustomerDrugCode,group_concat(AuditItemName) from noau ...
- oracle sql now函数,SQL Server,MySQL,Oracle,PostgreSQL中常用函数用法(1)日
练习使用Hibernate没有用MySQL数据库,而是用了前不久接触的PostgreSQL,由于不同的数据对于相同的操作有各自的函数,MySQL的date_format(),在PostgreSQL中是 ...
- discuz的ajax,discuz分页函数改成基于jqueryd的ajax分页函数
/** *AJAX分页 *$num 为总共的条数 比如说这个分类下共有15篇文章 *$perpage为每页要显示的条数 *$curpage为当前的页数 *$url为请求路径, *$obj为html ...
- mysql有什么好用的小函数_盘点MySQL中比较实用的函数
之前小编在工作中遇到一些处理数据的问题,例如完成日期格式化,获取几天后的时间,生成指定格式的编码等问题,这时候小编经常会写一大堆逻辑代码来进行处理,还自己感觉自己很流弊的样子,后来却发现同事遇到相同的 ...
- linux mysql换成_把 SQL Server 迁移到 Linux?不如换成 MySQL
(点击上方公众号,可快速关注) 英文:Tony Branson 译者:Linux中国 链接:linux.cn/article-8073-1.html 最近几年,数量庞大的个人和组织放弃 Windows ...
- php html转成数组,PHP_php将HTML表格每行每列转为数组实现采集表格数据的方法,本文实例讲述了php将HTML表格每 - phpStudy...
php将HTML表格每行每列转为数组实现采集表格数据的方法 本文实例讲述了php将HTML表格每行每列转为数组实现采集表格数据的方法.分享给大家供大家参考.具体如下: 下面的php代码可以将HTML表 ...
最新文章
- 罗永浩力荐,丁磊豪送的学习神器:手机查词真不如这支AI词典笔?
- 浅析那些你不知道的提升企业网站转化率的SEO优化技巧 !
- scala基础语法:for/while/do...while/
- 模式对话框与非模式对话框的区别2
- 软件工程结构化建模的方法和工具_软件工程系列-结构化设计方法2
- 基础编程题目集 6-4 求自定类型元素的平均 (10 分)
- java质因数算法_Java实现的质因数分解操作示例【基于递归算法】
- AF_INET是什么?
- Js显示Struts2中的内容之escape和escapeHtml
- kodi教程_KODI添加电视直播+修改台标教程
- Qt_QPushButton 原生按钮长按
- 青龙面板-快手极速版(每天3块脚本)(废-已不能使用)
- 先试试这一招,再决定是否要撬开拉杆箱的密码锁——巧开密码锁
- Adobe Acrobat的安装时出现:服务print spooler启动失败,请确认您有足够权限启动系,打印机print spooler系统服务不能正常启用解决办法
- LSC LensShading Correct
- 【Win】KMS 激活命令记录
- Python基于PHP+MySQL的个人网页设计与实现
- Python爬取‘跌妈不认’股票数据,绘制可视化图
- Vue动态赋值video视频
- 多张图片合并一张图片,在中间添加文字