已经写好
select 姓名,语文,数学,英语 from 成绩表
要求
结果集如下:
姓名 | 语文 | 语文名次 | 数学 | 数学名次 | 英语 | 英语名次 |
张三 | 80 | 1 | 44 | 2 | 13 | 2 |
李四 | 70 | 2 | 50 | 1 | 66 | 1 |
该怎么弄呢?
你可以试用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.姓名