问题描述:
有一个文件,我通过外部表访问它,通过关键字找到其中我需要的数据。
例如通过关键字我找到了3条数据,分别在文件的第10、15、20行,但是我不但需要这3条数据,还需要这3条数据的上一条数据,即我最终需要第9、10,14、15,19、20这6条数据。想通过给外部表增加一个自增长的ID字段,来定位每条数据的行号,但是没研究出来怎么给外部表增加自增长列,不知道是否支持?大家有没有其它好方法啊?谢谢!
有一个文件,我通过外部表访问它,通过关键字找到其中我需要的数据。
例如通过关键字我找到了3条数据,分别在文件的第10、15、20行,但是我不但需要这3条数据,还需要这3条数据的上一条数据,即我最终需要第9、10,14、15,19、20这6条数据。想通过给外部表增加一个自增长的ID字段,来定位每条数据的行号,但是没研究出来怎么给外部表增加自增长列,不知道是否支持?大家有没有其它好方法啊?谢谢!
1.dat:
7301,SMITH,CLERK,7902,17-DEC-80,100,0,20
7402,ALLEN,SALESMAN,7698,20-FEB-81,250,0,30
7503,WARD,SALESMAN,7698,22-FEB-81,450,0,30
7504,JONES,MANAGER,7839,02-APR-81,1150,0,20
2.dat:
7611,MARTIN,SALESMAN,7698,28-SEP-81,1250,0,30
7612,BLAKE,MANAGER,7839,01-MAY-81,1550,0,30
7913,MILLER,CLERK,7782,23-JAN-82,3500,0,10--创建目录对象
CREATE DIRECTORY DIR_TEST AS 'C:\';--创建外部表
CREATE TABLE EXT1(
emp_id number(4),
ename varchar2(12),
job varchar2(12) ,
mgr_id number(4) ,
hiredate date,
salary number(8),
comm number(8),
dept_id number(2)
)
ORGANIZATION EXTERNAL(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY DIR_TEST
ACCESS PARAMETERS(RECORDS DELIMITED BY NEWLINE
FIELDS TERMINATED BY ',')
LOCATION('1.DAT','2.DAT')
);--查询薪水部门薪水第一高和第二高的
SELECT *
FROM (SELECT t.*, row_number() over(PARTITION BY t.dept_id ORDER BY t.salary DESC) rn FROM ext1 t)
WHERE (rn = 1 OR rn = 2);
select * from
(
select rownum as id,a.* from ext_table a
)