恩,没弄清楚你要的是什么,不过大概写一个,参考下。
成都创新互联专业为企业提供抚州网站建设、抚州做网站、抚州网站设计、抚州网站制作等企业网站建设、网页设计与制作、抚州企业网站模板建站服务,十年抚州做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
SELECT ID,名称,A,RANK()OVER(ORDER BY A) A名次,B,RANK()OVER(ORDER BY B) B名次,C,RANK()OVER(ORDER BY C) C名次,D,RANK()OVER(ORDER BY D) D名次 .......FROM TABLE
尝试一下。
首先,来构造一些数据
drop table test;
create table test
(
name varchar2(10),
account number(5)
);
insert into test values ('张三','5');
insert into test values ('王五','10');
insert into test values ('小二','10');
insert into test values ('李四','20');
insert into test values ('小三','40');
insert into test values ('小四','50');
insert into test values ('小五','90');
insert into test values ('小六','90');
insert into test values ('小七','90');
commit;
下面来看一下一些方式的排名结果:
1. select t.*,dense_rank() over(order by t.account asc) 排名 from test t;
2. select t.*,dense_rank() over(order by t.account desc) 排名 from test t;
3. select t.*,rank() over(order by t.account asc) 排名 from test t;
4. select t.*,rank() over(order by t.account desc) 排名 from test t;
select rownum no,* from 表名 order by bonus desc;
Oracle的rownum与rowid区别:
ROWNUM是对结果集加的一个伪列,即先查到结果集之后再加上去的一个列 (强调:先要有结果集)。简单的说 rownum 是对符合条件结果的序列号。它总是从1开始排起的。所以你选出的结果不可能没有1,而有其他大于1的值;参考:
rowid 与 rownum 虽都被称为伪列,但它们的存在方式是不一样的,rowid 可以说是物理存在的,表示记录在表空间中的唯一位置ID,在DB中唯一。只要记录没被搬动过,rowid是不变的。rowid 相对于表来说又像表中的一般列,所以以 rowid 为条件就不会有 rownum那些情况发生
oracle中,有一个学生成绩视图,怎样给这个视图添加一列,并且在这一列中给学生的总成绩排名
你好,view是不可以增加列的,你只能修改view的基表,然后重建view。
如果你的表结构是student_cj(no,name,score1,score2,score3)
原来的view为
create view v_student_cj
as
select no,name,score1,score2,score3 from student_cj;
必须执行以下命令来满足你的需求
create or replace view v_student_cj
as
select no,name,score1,score2,score3,(score1+score2+score3) sum
from student_cj
order by sum desc;
把mysql中的数据获取出来,存入oracle中,当然,这两种数据库需要两个不同的数据操作类。然后在oracle中进行排序,再获取出来。
再细到表的话,你新建一个也好,用原来的也罢,就看你业务逻辑需要哪个了,也就是说原来oracle的数据需不需要保留
还有一个用代码实现(java不太好实现,需要写写代码,C#就容易多了),分别读取两个数据库中的数据,然后保存到容器里,相比较而言,我还是推荐第一种
为什么要再写一层啊
select nvl(date1,date2) date,aa from A order by nvl(date1,date2)
不行么??