浏览 3426 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-08-29
===============补充============ 换种类似的简单的来说明一下我的意思: 比如下表这张表, +----------------------+ | 学生 | 学科 | 成绩 | +----------------------+ | AA | 语文 | 93 | +----------------------+ | BB | 语文 | 88 | +----------------------+ | CC | 语文 | 72 | +----------------------+ | AA | 数学 | 88 | +----------------------+ | BB | 数学 | 77 | +----------------------+ | CC | 数学 | 66 | +----------------------+ 我想返回各科成绩排名前2的记录: 得到: +----------------------+ | 学生 | 学科 | 成绩 | +----------------------+ | AA | 语文 | 93 | +----------------------+ | BB | 语文 | 88 | +----------------------+ | AA | 数学 | 88 | +----------------------+ | BB | 数学 | 77 | +----------------------+ 这个语句应该怎么写呢?如果有多少门学科是动态追加的,是不是就不能用UNION来做了,请教一下。 ↓ 附件图片删除不了``` 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-08-29
不太明白你要做什麽
不過做是肯定能做的 大不了用union all就是了 |
|
返回顶楼 | |
发表时间:2007-08-29
换种类似的简单的来说明一下我的意思:
比如下表这张表, +----------------------+ | 学生 | 学科 | 成绩 | +----------------------+ | AA | 语文 | 93 | +----------------------+ | BB | 语文 | 88 | +----------------------+ | CC | 语文 | 72 | +----------------------+ | AA | 数学 | 88 | +----------------------+ | BB | 数学 | 77 | +----------------------+ | CC | 数学 | 66 | +----------------------+ 我想返回各科成绩排名前2的记录: 得到: +----------------------+ | 学生 | 学科 | 成绩 | +----------------------+ | AA | 语文 | 93 | +----------------------+ | BB | 语文 | 88 | +----------------------+ | AA | 数学 | 88 | +----------------------+ | BB | 数学 | 77 | +----------------------+ 这个语句应该怎么写呢?如果有多少门学科是动态追加的,是不是就不能用UNION来做了,请教一下。 |
|
返回顶楼 | |
发表时间:2007-08-29
ORACLE里面可以用分组排名函数,大概可以解决楼主的问题
http://www.cnblogs.com/lizw/archive/2007/04/26/729005.aspx |
|
返回顶楼 | |
发表时间:2007-09-18
明白了,用分析函数来做,如:
select * from( select name,subject,score,rank()over(partition by subject order by score desc) mm from test )where mm<=3 感谢楼上的提示。 |
|
返回顶楼 | |