У меня есть таблица, которая представляет собой построчный дамп данных, считываемых из определенного формата текстового файла. Каждая строка может представлять собой «ведущую» или «детальную» строку, обозначенную кодом rec_type
. Я хотел бы написать запрос, который получает «ведущие» строки рядом со связанными строками. Я придумал что-то, что делает эту работу, но это кажется немного хакерским, и я заинтересован в лучших способах, если они есть.Окно аналитической функции Oracle, определяемое данными
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, однако в этом году мы должны обновить до 11 г R1.
+1 Хорошие данные образца. –