表A
姓名 科目 成绩
张三 语文 90
张三 数学 91
张三 生物 92
李四 语文 80
李四 物理 30
王五 生物 45
王五 物理 87通过SQL 得到姓名 科目1 成绩1 科目2 成绩2 科目3 成绩3
张三 语文 90 数学 91 生物 92
李四 语文 80 物理 30
王五 生物 45 物理 87
姓名 科目 成绩
张三 语文 90
张三 数学 91
张三 生物 92
李四 语文 80
李四 物理 30
王五 生物 45
王五 物理 87通过SQL 得到姓名 科目1 成绩1 科目2 成绩2 科目3 成绩3
张三 语文 90 数学 91 生物 92
李四 语文 80 物理 30
王五 生物 45 物理 87
解决方案 »
- linux下使用sqlldr导入数据该如何操作???谢谢鸟
- delete语句的条件是not in +数组,如何写,谢谢!
- ORA-12560
- Oracle已经安装好,现在要添加组件?用install.exe该如何处理?会不会删除掉现在的文件?
- merge into 如何应用多个update
- union时报 ORA-12704: 字符集不匹配 错
- 我要学developer2000,谁有实用一点的资料?请help
- oracle9i安装(高分相送,在线等待)
- 了解一下北京程序员的薪水~!希望大家实话实说,最好都说的详细点!!
- 数据库exp全库导出时,报如下的错误,请问各位高人如何解决?
- 过程执行到一半挂起了,帮忙看一下
- linux下启动netmgr出现乱码
max(decode(rn,2,科目)) 科目2,max(decode(rn,2,成绩)) 成绩2,
max(decode(rn,3,科目)) 科目3,max(decode(rn,3,成绩)) 成绩3
from (select 姓名,科目,成绩,row_number() over(partition by 姓名 order by rownum) rn from tb)
group by 姓名;
12:38:10 2 union all
12:38:10 3 select '张三','数学',91 from dual
12:38:10 4 union all
12:38:10 5 select '张三','生物',92 from dual
12:38:10 6 union all
12:38:10 7 select '李四','语文',80 from dual
12:38:10 8 union all
12:38:10 9 select '李四','物理',30 from dual
12:38:10 10 union all
12:38:10 11 select '王五','生物',45 from dual
12:38:10 12 union all
12:38:10 13 select '王五','物理',87 from dual)
12:38:10 14 select 姓名,max(decode(rn,1,科目)) 科目1,max(decode(rn,1,成绩)) 成绩1,
12:38:10 15 max(decode(rn,2,科目)) 科目2,max(decode(rn,2,成绩)) 成绩2,
12:38:10 16 max(decode(rn,3,科目)) 科目3,max(decode(rn,3,成绩)) 成绩3
12:38:10 17 from (select 姓名,科目,成绩,row_number() over(partition by 姓名 order by rownum) rn from tb)
12:38:10 18 group by 姓名;姓名 科目 成绩1 科目 成绩2 科目 成绩3
---- ---- ---------- ---- ---------- ---- ----------
李四 语文 80 物理 30
王五 生物 45 物理 87
张三 语文 90 数学 91 生物 92已用时间: 00: 00: 00.00
就是一个人最多有多少科目,假设是n,那么改动一下就行啊select 姓名,max(decode(rn,1,科目)) 科目1,max(decode(rn,1,成绩)) 成绩1,
max(decode(rn,2,科目)) 科目2,max(decode(rn,2,成绩)) 成绩2,
...........
...........
max(decode(rn,n,科目)) 科目n,max(decode(rn,n,成绩)) 成绩n
from (select 姓名,科目,成绩,row_number() over(partition by 姓名 order by rownum) rn from tb)
group by 姓名;