Oracle_sql 基础_查询练习
来源:互联网 发布:淘宝店banner尺寸 编辑:程序博客网 时间:2024/05/16 11:46
1.行转列:
(1) 单表行转列
① 前置条件:
create table tb(姓名 varchar(10),课程 varchar(10),分数 int)insert into tb values('张三','语文',74);insert into tb values('张三','数学',83);insert into tb values('张三','物理',93);insert into tb values('李四','语文',74);insert into tb values('李四','数学',84);insert into tb values('李四','物理',94);select * from tb;
② 方法1:
select 姓名, max(case 课程 when '语文' then 分数 else 0 end)语文, max(case 课程 when '数学'then 分数 else 0 end)数学, max(case 课程 when '物理'then 分数 else 0 end)物理from tbgroup by 姓名
③ 方法2:
--仅在Oracle11g及以后有用select * from tb pivot(max(分数) for 课程 in (语文,数学,物理))a
④ 方法3(显示格式稍微有一些不一样):
SELECT 姓名, WMSYS.WM_CONCAT(课程), WMSYS.WM_CONCAT(分数) FROM tb GROUP BY 姓名;
(2) 多表行转列
------------------------------------------------------------------------------------------------
① 前置条件:
create table pm_ci(ci_id varchar(10),stu_ids varchar(10));insert into pm_ci values('1','1');insert into pm_ci values('1','2');insert into pm_ci values('1','3');insert into pm_ci values('1','4');insert into pm_ci values('2','1');insert into pm_ci values('2','4');select *from pm_ci;SELECT ci_id, WMSYS.WM_CONCAT(stu_ids) FROM pm_ci GROUP BY ci_id;create table pm_stu(stu_id varchar(10),stu_name varchar(10));insert into pm_stu values('1','张三');insert into pm_stu values('2','李四');insert into pm_stu values('3','王五');insert into pm_stu values('4','赵六');select * from pm_stu;
② 提示:
【1】需要进行两个表的连接查询,为两个表都取别名。
【2】使用instr(a,b)函数,该函数的含义为:如果字符串b在字符串a的里面,则返回的是b在a中的位置,即返回值大于0。
【3】需要用到分组查询。
【4】使用wm_concat(cols)函数对学生姓名用逗号进行拼接。
select c.ci_id, WMSYS.WM_CONCAT(s.stu_name)from pm_ci c, pm_stu swhere instr(c.stu_ids,s.stu_id) > 0group by c.ci_id;
阅读全文
1 0
- Oracle_sql 基础_查询练习
- Oracle_sql 基础_查询语句
- Oracle_sql 基础_用户和表空间
- Oracle_sql 基础_表与约束
- Oracle_SQL基础
- oracle_sql基础
- Oracle_SQL练习_04
- Oracle_SQL练习_07
- Oracle_SQL练习_08
- Oracle_SQL高级查询
- oracle_sql 基础 (1)
- oracle_sql 基础 (2)
- oracle_sql 基础 (3)
- oracle_sql 基础 (4)
- oracle_sql 基础 (5)
- ORACLE_SQL基础(1)
- ORACLE_SQL基础(2)
- ORACLE_SQL基础(3)
- ext前台关于树和表格数据之间动态转换
- 一道stack的题目
- 20170923
- LeetCode-162. Find Peak Element
- 区别 Jquery对象和Dom对象
- Oracle_sql 基础_查询练习
- Linux基础入门(五)--学习笔记-历史命令
- 垃圾收集器及GC调优
- 为什么要Time_wait
- 玄关什么意思
- 统计学简介之十二——一个总体参数的检验
- 解决用WebView去加载网页在部分手机上闪退问题
- 【分层实验框架】Google 重叠实验框架:更多,更好,更快地实验
- windows装pip出现的问题 (改字符编码引起的错误)