У меня есть таблица, которая представляет построчный дамп данных, считанных из определенного формата текстового файла. Каждая строка может представлять собой строку «master» или «detail», указанную с помощью кода 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.