J'ai une table qui représente une décharge ligne par ligne des données lues à partir d'un format de fichier texte particulier. Chaque ligne peut représenter une ligne "maître" ou "détail", indiquée par le code rec_type
. Je voudrais écrire une requête qui obtient les lignes «maître» à côté des lignes de détail associées. Je suis venu avec quelque chose qui fait le travail, mais il semble un peu hackish et suis intéressé par de meilleurs moyens le cas échéant.fenêtre de fonction analytique Oracle définie par des données
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');
résultat souhaité:
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
Hypothèses:
- enregistrements sont traités dans l'ordre du premier type de disque rec_seq
- est un "
100
" - chaque "
100
" enregistrement a 1 ou plus "200
"enregistrements suivants
Remarque: ceci est pour Oracle 9i, mais nous devrions passer à 11g R1 cette année.
+1 Bonnes données d'échantillon. –