2016-06-12 68 views
0

我在我們的庫中有一個名爲BAIMTHP的格式如下的文件。數據抽取DB2

我想提取僅與50K相關的行(對於TEF_NO 12345,ROW_#3,4 & 5對於TEF_NO 56789,ROW_#1,2,3 & 4)。問題在於TAG字段不會爲所有行填充,相反,ROW_#將被填充。我嘗試了下面的SQL,但我只能提取TAG字段的第一行。在這種情況下,僅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行之後爲空 - 但以下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

完美地工作。非常感謝解決方案..... –