我有一个表格,它表示从特定文本文件格式读取的数据的逐行转储。每行可以代表一个“主”或“详细”行,通过rec_type
代码表示。我想编写一个查询,在相关的详细信息行旁边获取“主”行。我想出了一些可以完成这项工作的东西,但它似乎有点老套,并且对更好的方法感兴趣(如果有的话)。
CREATE TABLE mdtest
(rec_seq NUMBER PRIMARY KEY
,rec_type VARCHAR2(3) NOT NULL
,rec_data VARCHAR2(100) NOT NULL);
INSERT INTO mdtest VALUES (1, '100', 'Bill Jones');
INSERT INTO mdtest VALUES (2, '200', '20080115,100.25');
INSERT INTO mdtest VALUES (3, '100', 'John Smith');
INSERT INTO mdtest VALUES (4, '200', '20090701,80.95');
INSERT INTO mdtest VALUES (5, '200', '20091231,110.35');
期望的结果:
SEQ_EMP EMP_NAME SEQ_DATA EMP_DATA
======= ========== ======== ===============
1 Bill Jones 2 20080115,100.25
3 John Smith 4 20090701,80.95
3 John Smith 5 20091231,110.35
假设:
- 记录按 rec_seq 的顺序处理
- 第一个记录类型是“
100
” - 每个 "
100
" 记录有 1 个或多个 "200
" 记录跟随
注意:这是针对 Oracle 9i 的,但是今年我们应该升级到 11g R1。