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

已经写好

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

 

要求

结果集如下:

姓名语文语文名次数学数学名次英语英语名次
张三801442132
李四702501661

 

该怎么弄呢?

 

 

 

 

 

你可以试用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.姓名