what about :
select (5-rownum/100) n_arrange,* from (select * from rbt order by Rbt_counter )
select (5-rownum/100) n_arrange,* from (select * from rbt order by Rbt_counter )
解决方案 »
- oracle rman备份恢复问题
- 多表关联查询(有同一张表虚拟多表的情况)的问题
- oracle 查询语句
- 存在表T(a,b,c,d),要备份表中数据,写ORACLE,Sql。请教高手怎么写?在线等
- SQL 语句求解~~~~~~~~在线等.........等等等!!!!!!!1
- 关联两个表做Updage 操作。。。。。。。。[初级]
- 哪里有关于oracle9i的一些基本操作(建库建表删除数据等)说明文章下载?
- 请教 如何在oracle中自建一个函数
- 请教一个所有学习oracle的人都关心的问题:oracle的ocp认证
- 一个表中的一个字段在另外两个表(结构一样)中关联,怎样一次性将两表数据都查出来
- 求助:execute immediate的问题!!!!急!!!
- 如何用SQL语句解决这样的问题?急!
(select * from rbt order by Rbt_counter)a
(select * from rbt order by Rbt_counter)a
可以用pl/sql解决。
创建表:
create table RBT
(
RBT_ID NUMBER(6) primary key,
RBT_COUNTER NUMBER(11) not null,
RBT_NAME VARCHAR2(50)
)
/
创建索引
create sequence RBT_SEQ
minvalue 0
maxvalue 999999
start with 1020
increment by 1
cache 20;
用一个匿名块插入所需测试数据:
BEGIN
FOR v_num IN 0..501 LOOP
INSERT INTO rbt
VALUES(rbt_seq.nextval, 501-v_num, 'name' || lpad(rbt_seq.nextval, 6, '0'));
END LOOP;
commit;
DBMS_OUTPUT.PUT_LINE('insert into rbt ' || 501 || ' records successfully!'); EXCEPTION
WHEN OTHERS THEN
NULL;
END;
/创建用于查询的存储过程:
CREATE OR REPLACE PROCEDURE QUERY_RBT
AS
DECLARE
v_count binary_integer;
v_range binary_integer;
v_rbt RBT%rowtype; CURSOR CUR_RBT IS
SELECT RBT_ID,RBT_COUNTER,RBT_NAME
FROM RBT;
BEGIN
OPEN CUR_RBT;
FETCH CUR_RBT INTO v_rbt;
IF (SQL%FOUND) THEN
DBMS_OUTPUT.PUT_LINE('RBT_ID ' || 'RBT_COUNTER ' || 'RBT_NAME ' || 'n_arrange');
ELSE
DBMS_OUTPUT.PUT_LINE('record of table doesn''t exist!');
END IF;
WHEN SQL%FOUND DO LOOP
SELECT COUNT(*)
INTO v_count
FROM RBT
WHERE RBT_COUNTER > v_rbt.RBT_COUNTER; IF (v_count < 100) THEN
v_range := 5;
ELSIF (v_count < 200) THEN
v_range := 4;
ELSIF (v_count < 300) THEN
v_range := 3;
ELSIF (v_count < 400) THEN
v_range := 2;
ELSE
v_range := 1;
END IF; DBMS_OUTPUT.PUT_LINE(v_rbt.RBT_ID || ' ' || v_rbt.RBT_COUNTER || ' ' || v_rbt.RBT_NAME || ' ' || v_range);
FETCH CUR_RBT INTO v_rbt;
END LOOP; EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(sqlcode || ',' || sqlerrm);
RAISE;
END QUERY_RBT;
/
接下来运行测试:
SQL>set serveroutput on size 10000000
SQL>exec query_rbt;
下面的结果略去。
1-50:n_arrange = 5
51-120:n_arrange = 4
121-250:n_arrange = 3
251-500:n_arrange = 2
501以下:n_arrange = 1因为我的库在mysql中,所以没法写存储过程,请问这个语句该怎么写