行列转换
来源:互联网 发布:远程控制软件源代码 编辑:程序博客网 时间:2024/06/08 17:52
列转行-A(1)SQL> create table tb 2 ( 3 Name varchar(10) , 4 Subject varchar(10) , 5 Result int 6 ); Table createdSQL> insert into tb(Name , Subject , Result) values('张三' , '语文' , 74); 1 row insertedSQL> insert into tb(Name , Subject , Result) values('张三' , '数学' , 83); 1 row insertedSQL> insert into tb(Name , Subject , Result) values('张三' , '物理' , 93); 1 row insertedSQL> insert into tb(Name , Subject , Result) values('李四' , '语文' , 74); 1 row insertedSQL> insert into tb(Name , Subject , Result) values('李四' , '数学' , 84); 1 row insertedSQL> insert into tb(Name , Subject , Result) values('李四' , '物理' , 94); 1 row insertedSQL> select * from tb; NAME SUBJECT RESULT---------- ---------- ---------------------------------------张三 语文 74张三 数学 83张三 物理 93李四 语文 74李四 数学 84李四 物理 94 6 rows selected SQL> SQL> select name 姓名, 2 max(case subject when '语文' then result else 0 end) 语文, 3 max(case subject when '数学' then result else 0 end) 数学, 4 max(case subject when '物理' then result else 0 end) 物理 5 from tb 6 group by name; 姓名 语文 数学 物理---------- ---------- ---------- ----------李四 74 84 94张三 74 83 93
<pre name="code" class="sql">行转列-A(1)select * from( select 姓名 as Name , Subject = '语文' , Result = 语文 from tb1 union all select 姓名 as Name , Subject = '数学' , Result = 数学 from tb1 union all select 姓名 as Name , Subject = '物理' , Result = 物理 from tb1) t ORA-00923: 未找到要求的 FROM 关键字 SQL> select 姓名 as Name , Subject = '语文' , Result = 语文 from tb1; select 姓名 as Name , Subject = '语文' , Result = 语文 from tb1 ORA-00923: 未找到要求的 FROM 关键字 SQL> select 姓名 as Name , Subject '语文' , Result 语文 from tb1; select 姓名 as Name , Subject '语文' , Result 语文 from tb1 ORA-00923: 未找到要求的 FROM 关键字 SQL> select 姓名 as Name , Subject as '语文' , Result 语文 from tb1; select 姓名 as Name , Subject as '语文' , Result 语文 from tb1 ORA-00923: 未找到要求的 FROM 关键字 SQL> select 姓名 as Name , '语文' Subject ,语文 Result from tb1; NAME SUBJECT RESULT---------- ------- --------------------------------------- SQL> select 姓名 as Name , '语文' Subject ,语文 Result from tb1; NAME SUBJECT RESULT---------- ------- ---------------------------------------张三 语文 74李四 语文 74 SQL> select 姓名 as Name , '数学' Subject ,数学 Result from tb1; NAME SUBJECT RESULT---------- ------- ---------------------------------------张三 数学 83李四 数学 84 SQL> select 姓名 as Name , '物理' Subject ,物理 Result from tb1; NAME SUBJECT RESULT---------- ------- ---------------------------------------张三 物理 93李四 物理 94 SQL> select * from ( select 姓名 as Name , '语文' Subject ,语文 Result from tb1 union all select 姓名 as Name , '数学' Subject ,数学 Result from tb1 union all select 姓名 as Name , '物理' Subject ,物理 Result from tb1 ) t order by Name DESC, case Subject when '语文' then 1 when '数学' then 2 when '物理' then 3--when '总分' then 4end DESC; NAME SUBJECT RESULT---------- ------- ----------张三 物理 93张三 数学 83张三 语文 74李四 物理 94李四 数学 84李四 语文 74 6 rows selected SQL>-------------------------------------------------------------行转列-------------------------------------------------------------------------------------------------SQL> create table tb1 2 ( 3 姓名 varchar(10) , 4 语文 int , 5 数学 int , 6 物理 int 7 ) 8 ; Table created SQL> SQL> insert into tb1(姓名 , 语文 , 数学 , 物理) values('张三',74,83,93); 1 row inserted SQL> insert into tb1(姓名 , 语文 , 数学 , 物理) values('李四',74,84,94); select * from tb;1 row inserted SQL> select * from tb1; 姓名 语文 数学 物理---------- --------------------------------------- --------------------------------------- ---------------------------------------张三 74 83 93李四 74 84 94 SQL> select * from tb; NAME SUBJECT RESULT---------- ---------- ---------------------------------------张三 语文 74张三 数学 83张三 物理 93李四 语文 74李四 数学 84李四 物理 94 6 rows selected SQL> commit; Commit complete SQL> SQL> select * from 2 ( 3 select 姓名 as Name , '语文' Subject ,语文 Result from tb1 4 union all 5 select 姓名 as Name , '数学' Subject ,数学 Result from tb1 6 union all 7 select 姓名 as Name , '物理' Subject ,物理 Result from tb1 8 ) t 9 ; NAME SUBJECT RESULT---------- ------- ----------张三 语文 74李四 语文 74张三 数学 83李四 数学 84张三 物理 93李四 物理 94 6 rows selected SQL> select * from 2 ( 3 select 姓名 as Name , '语文' Subject ,语文 Result from tb1 4 union all 5 select 姓名 as Name , '数学' Subject ,数学 Result from tb1 6 union all 7 select 姓名 as Name , '物理' Subject ,物理 Result from tb1 8 ) t 9 order by name; 10 SQL> SQL> select * from 2 ( 3 select 姓名 as Name , '语文' Subject ,语文 Result from tb1 4 union all 5 select 姓名 as Name , '数学' Subject ,数学 Result from tb1 6 union all 7 select 姓名 as Name , '物理' Subject ,物理 Result from tb1 8 ) t 9 order by Name 10 ; NAME SUBJECT RESULT---------- ------- ----------李四 语文 74李四 数学 84李四 物理 94张三 物理 93张三 语文 74张三 数学 83 6 rows selected SQL> SQL> select * from 2 ( 3 select 姓名 as Name , '语文' Subject ,语文 Result from tb1 4 union all 5 select 姓名 as Name , '数学' Subject ,数学 Result from tb1 6 union all 7 select 姓名 as Name , '物理' Subject ,物理 Result from tb1 8 ) t 9 order by Name 10 DESC; NAME SUBJECT RESULT---------- ------- ----------张三 语文 74张三 数学 83张三 物理 93李四 数学 84李四 物理 94李四 语文 74 6 rows selected SQL> SQL> select * from 2 ( 3 select 姓名 as Name , '语文' Subject ,语文 Result from tb1 4 union all 5 select 姓名 as Name , '数学' Subject ,数学 Result from tb1 6 union all 7 select 姓名 as Name , '物理' Subject ,物理 Result from tb1 8 ) t 9 order by Name DESC, case Subject when '语文' then 1 when '数学' then 2 when '物理' then 3 10 --when '总分' then 4 11 end DESC; NAME SUBJECT RESULT---------- ------- ----------张三 物理 93张三 数学 83张三 语文 74李四 物理 94李四 数学 84李四 语文 74 6 rows selected SQL> select * from tb; NAME SUBJECT RESULT---------- ---------- ---------------------------------------张三 语文 74张三 数学 83张三 物理 93李四 语文 74李四 数学 84李四 物理 94 6 rows selected SQL> select * from tb1; 姓名 语文 数学 物理---------- --------------------------------------- --------------------------------------- ---------------------------------------张三 74 83 93李四 74 84 94 SQL> SQL> select * from 2 ( 3 select 姓名 as Name , '语文' Subject ,语文 Result from tb1 4 union all 5 select 姓名 as Name , '数学' Subject ,数学 Result from tb1 6 union all 7 select 姓名 as Name , '物理' Subject ,物理 Result from tb1 8 union all 9 select 姓名 as Name , '平均分' Subject , cast((语文 + 数学 + 物理)*1.0/3 as decimal(18,2)) Result from tb1 10 union all 11 select 姓名 as Name , '总分' Subject ,语文 + 数学 + 物理 Result from tb1 12 ) t 13 order by name , case Subject when '语文' then 1 when '数学' then 2 when '物理' then 3 when '平均分' then 4 when '总分' then 5 end 14 ; NAME SUBJECT RESULT---------- ------- ----------李四 语文 74李四 数学 84李四 物理 94李四 平均分 84李四 总分 252张三 语文 74张三 数学 83张三 物理 93张三 平均分 83.33张三 总分 250 10 rows selected SQL>
0 0
- 行列转换
- 行列转换
- 行列转换
- 行列转换
- 行列转换
- 行列转换
- 行列转换
- 行列转换
- 行列转换
- 行列转换
- 行列转换
- 行列转换
- 行列转换
- 行列转换
- 行列转换
- 行列转换
- 行列转换
- 行列转换
- HDU 1047 大数相加
- TextView中ellipsize属性
- 数学之美(吴军著)学习总结和经典摘抄
- Android常用 adb 命令
- 如何上传Android应用到百度应用平台
- 行列转换
- Std iterator一些用法
- hdu 4433 locker(动态规划:枚举状态)
- HttpClient 4.3教程(转载)
- jqMobi基础(4)--jqMobi中Side Menu实现(类似人人网)
- java_数组声明、创建、初始化,对象数组
- 1、Spring之HelloWorld
- Redis源码学习3-基本数据结构之双向链表
- C++学习笔记精华