不同版本oracle数据列转行
来源:互联网 发布:3d数据图表制作软件 编辑:程序博客网 时间:2024/06/03 15:00
遇到一个问题,前辈们之前将一张12题的评分卷在答案表中存了12次,查询的时候再关联查,造成的返回结果数量庞大,一条数据需要答案表12条结果。
(答案表) (数据表)
为了减小查询开支,决定将同一id的数据整合为一条,效果如下:
(效果视图)
所以要将同一个id的得分列转行,但是不同的oracle版本操作不同,在此作说明:
oracle 11g 操作就相对较简单:
按照问题编号排序:
select id,LISTAGG(target_score, ',') WITHIN GROUP(ORDER BY target_id) target_score from EXAM_TARGET_SCORE group by id
oracle 11g以下的版本要稍微复杂一点:
1、首先列转行
select ID,wm_concat(target_score) as target_score from EXAM_TARGET_SCORE GROUP BY ID
但是发现结果顺序是乱的,所以需要排序
2、排序
select ID,target_id,wm_concat(target_score) over(partition by id order by target_id) as target_score from EXAM_TARGET_SCORE
发现我们要筛选出最多的数据行,所以需要进行筛选操作
3、筛选
SELECT T1.ID,T1.target_score FROM(select ID,target_id,wm_concat(target_score) over(partition by id order by target_id) as target_score from EXAM_TARGET_SCORE) T1, (SELECT id,max(target_id) AS target_id from (select ID,target_id,wm_concat(target_score) over(partition by id order by target_id) as target_score from EXAM_TARGET_SCORE) t group by id) T2 WHERE T1.ID=T2.ID AND T1.target_id=T2.target_id ORDER BY T1.ID
4、添加视图
CREATE or replace VIEW VIEW_EXAM_TARGET_SCORE AS SELECT T1.ID,T1.target_score FROM......
完工!!!
阅读全文
0 0
- 不同版本oracle数据列转行
- ORACLE 列转行
- 行转列.列转行 oracle
- Oracle列转行
- oracle 行转列,列转行
- 【ORACLE】行转列,列转行
- oracle 列转行
- oracle 行转列 列转行
- oracle 行转列,列转行
- ORACLE sql 列转行
- oracle列转行
- oracle 行转列 列转行
- oracle 列转行
- oracle 列转行
- oracle行转列、列转行
- oracle 列转行
- oracle 行转列 列转行
- oracle 行转列 列转行
- 算法机考模拟题 part2
- oracle学习之例外
- Neutron的基本原理与代码实现
- jstl遍历集合
- thinkphp 的检测类的实例
- 不同版本oracle数据列转行
- 学习笔记脚本开发之节点与组件
- gensim 之 word2vec
- android输入金额格式化文本框金额格式控制
- 蓝桥杯 ADV-162 算法提高 题目1 最大最小值
- 微信小程序实现高亮效果
- HDU 2276 矩阵快速幂,解法:1循环矩阵31ms,2普通矩阵327ms。
- iOS-GCD定时器
- 无法识别的属性“targetFramework”解决办法