在写一些复杂的SQL的时候,经常需要使用到行变列的技巧,一些帐务系统的统计也经常会写到这样的SQL。主要用到了max、decode或nvl这些函数来达到目的。写下来让大家互相学习学习!下面是一个行变列的例子。
如表ROW2COLUMN2有以下数据:
名字 课程 分数
1 张三 语文 80
2 张三 数学 86
3 张三 英语 75
4 李四 语文 78
5 李四 数学 85
6 李四 英语
78
想变成下面记录:
名字 语文 数学 英语
1 李四 78 85 78
2 张三 80 86 75
----------------------------------------------
CREATE TABLE ROW2COLUMN2(NAME_ VARCHAR2(20),
CLASS VARCHAR2(50),
SCORE NUMBER(3));
INSERT INTO ROW2COLUMN2 VALUES ('张三', '语文', 80);
INSERT INTO ROW2COLUMN2
VALUES ('张三', '数学', 86);
INSERT INTO ROW2COLUMN2 VALUES ('张三', '英语',
75);
INSERT INTO ROW2COLUMN2 VALUES ('李四', '语文', 78);
INSERT INTO
ROW2COLUMN2 VALUES ('李四', '数学', 85);
INSERT INTO ROW2COLUMN2 VALUES ('李四',
'英语', 78);
SELECT * FROM ROW2COLUMN2;
SELECT NAME_,
MAX(DECODE(CLASS, '语文', T.SCORE,
0)) 语文,
MAX(DECODE(CLASS, '数学', T.SCORE, 0)) 数学,
MAX(DECODE(CLASS, '英语', T.SCORE, 0)) 英语
FROM ROW2COLUMN2 T
GROUP BY
NAME_;
分享到:
相关推荐
oracle行转列
oracle行转列_列转行,实例加解析,自己测试没问题。免费分享了~
NULL 博文链接:https://vernonchen163.iteye.com/blog/1902976
Oracle行转列
用存储过程写的动态行转列。简单易用,查询速度高效
oracle 行转列的sql语句写法, 附带例子
数据库查询中难免会遇到行列转换的情况,摘列一些较精典的解决方案
NULL 博文链接:https://13966692733-163-com.iteye.com/blog/1192434
oracle数据库最详细的行转列资料,是官方文档的详细介绍版,中文的
关于oracle数据库如何行转列SQL语句。
SQL行转列问题,有实例,根据具体实例讲解,清晰易懂。 希望对你有帮助!
行转列函数,对于学习sql查询的朋友们,可能会遇到这样的要求,此文档中做了详细记载,希望可以帮到你!
通过oracle的管道技术实现行变列,或者复杂的SQL语句实现。 可以完成复杂逻辑在oracle中完成,减少对编程程序的依赖。
oracle实现行转列功能,并使用逗号进行隔开拼接,成为一条数据.pdf
许多情况下,由于程序中需要将行转为列展示,如果使用ORACLE那么这个资源适合你。
理解日常工作中常用到的多列分组, 如【统计不同部门、 不同职位的平均工资】和 行转列 包含例子 和 个人理解分析
DB2 SQL 通过函数(CONCAT/POSSTR/LOCATE)实现行转列,列转行 可以按照标点把多列转换为一行,多行转换为一列
Oracle存储过程,实现行变列,含有2个存储过程,学习的不要放过
Oracle中使用语句将行数据转换称不同的列表示,或者将不同的列数据写到同一列的不同行上的行列转换问题是一个非常传统的话题。 网络上流传了很多将行数据转换称列数据的方法和应用实例,一般通过decode或者case函数...