2016-06-12 8 views
0

私は私たちのライブラリにBAIMTHPと呼ばれる以下の形式のファイルを持っています。データ抽出DB2

TEF_NO 12378、ROW_#3、4 & 5 TEF_NO 56789、ROW_#1、2、3 &の4つのラインのみを抽出します。問題は、TAGフィールドがすべての行に移入されず、代わりにROW_#が移入されることです。以下のSQLを試しましたが、TAGフィールドの1行目だけを抽出できました。この場合、ROW_#1および3のみ(それぞれTEF_NO = 56789 & TEF_NO = 12345)。

DB2でこれを行う方法はありますか? TAG 50Kは、最大で4行しか入力されません。

CREATE TABLE QTEMP. TEST AS (SELECT * FROM EMOQRYLIB.BAIMTHP WHERE TAG = '50K') 

画像は私のプロファイルにアップロードすることが許可されていないので、私は、サンプルファイルの詳細情報を入力しなければならなかった

TEF_NO  TAG   ROW_#  TEXT 
12345   20K   1    XXXXXX 
12345   25K   2    XXXXXX 
12345   50K   3    29/1 
12345       4    Ahamath Lane 
12345       5    Colombo 
56789   50K   1    No 11 
56789       2    17th Lane 
56789       3    Colpitty 
56789       4    Colombo 
56789   57A   5    XXXXXX 
56789   52B   6    XXXXXX 

理想的な出力

TEF_NO  TAG   ROW_#  TEXT 
12345   50K   3    29/1 
12345       4    Ahamath Lane 
12345       5    Colombo 
56789   50K   1    No 11 
56789       2    17th Lane 
56789       3    Colpitty 
56789       4    Colombo 

答えて

0

あなたの質問はについて明確ではありませんロジック - TAGフィールドが50K行の後でのみnullの場合 - しかし、SQLの後には(テーブル名は私の場合はテーブル名t50を使用します):

select tef_no, tag, row_#, text 
    from t50 t 
where tef_no in (select tef_no from t50 where tag = '50K') 
    and row_# >= (select row_# from t50 where tag = '50K' and tef_no= t.tef_no) 
    and row_# < (select row_# from t50 where tag = '50K' and tef_no= t.tef_no) + 4 
+0

完全に動作します。ソリューションのおかげで..... –

関連する問題