特定のテキスト ファイル形式から読み取ったデータの行ごとのダンプを表すテーブルがあります。各行は、コードで示される「マスター」行または「詳細」行を表す場合があり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 にアップグレードする必要があります。