oracle 查询语句 结果集中要求有多个按照某列排列的顺序号

已经写好

select 姓名,语文,数学,英语  from 成绩表

 

要求

结果集如下:

姓名 语文 语文名次 数学 数学名次 英语 英语名次
张三 80 1 44 2 13 2
李四 70 2 50 1 66 1

 

该怎么弄呢?

 

 

 

 

 

3个回答

你可以试用oracle 的 rank()函数进行处理,具体使用你可以参考其它文档

可以根据不同的排序,在后台条件判断,对sql语句做拼接

select e.姓名,英语,e.rk,语文,c.rk,数学,m.rk
(select 姓名,英语,rownum rk from 成绩表 order by 英语 desc) e
join (select 姓名,语文,rownum rk from 成绩表 order by 语文 desc) c on e.姓名=c.姓名
join (select 姓名,数学,rownum rk from 成绩表 order by 数学 desc) m on e.姓名=m.姓名

codercn
codercn 漏了一个from:select e.姓名,英语,e.rk,语文,c.rk,数学,m.rk from
大约 7 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问