已知一个表的结构为:
姓名 科目 成绩
张三 语文 20
张三 数学 30
张三 英语 50
李四 语文 70
李四 数学 60
李四 英语 90
怎样通过select语句把他变成以下结构:
姓名 语文 数学 英语
张三 20 30 50
李四 70 60 90
姓名 科目 成绩
张三 语文 20
张三 数学 30
张三 英语 50
李四 语文 70
李四 数学 60
李四 英语 90
怎样通过select语句把他变成以下结构:
姓名 语文 数学 英语
张三 20 30 50
李四 70 60 90
解决方案 »
- 请问Oracle数据库存储过程中:=是什么意思
- hello。。如果程序包的组件是函数,那么该怎么调用呢?
- 求助:执行maxinst出现无效的框架对象korean_lexer,请大家帮我看看啊,谢谢啦!
- 时间冲突的判断
- oracle捕捉和跟踪
- 查询表所在的表空间
- 判断视图是否存在后删除视图
- 请问如何对Oracle的数据库或表进行加密
- varchar2类型在Oracle中理论上可以存储4000bytes的字节 , 但是我在某数据库中设定一个可以存储4000字节的字段, 在插入3千多个字节的时候
- oracle数据库中怎么在两个个字段中间查询需要的日期啊急急急
- 请教一个简单的问题,如何根据A表字段查询B表的字段信息,并把结果插入A表中。
- 请教v$sql_workarea_histogram问题
http://topic.csdn.net/u/20091019/11/67cd55a3-3f42-4db7-a3f8-91dd52a913cd.html?30915
select 姓名,
max(decode(科目,'语文',成绩))语文,
max(decode(科目,'数学',成绩))数学,
max(decode(科目,'英语',成绩))英语,
from table1
group by 姓名
union all select '张三','数学',30 from dual
union all select '张三','英语',50 from dual
)
select names,max(decode(rn,1,grade,0))语文,
max(decode(rn,2,grade,0))数学,
max(decode(rn,3,grade,0))英语
from(select tmp.*,row_number()over(partition by names order by grade)rn from tmp)
group by names
自己修改吧