2011-10-24 18 views
0

2つの表にデータが分散しています。 2番目のテーブルは、データを行番号で格納します。多くの代わりに1行に行番号を表示する方法はありますか?スクリーンショットを参照してください。 Line Numbers jumbled行を1行にマージする - oracle 10g

SELECT DISTINCT II.FC, 
      II.GN, 
      II.PB, 
      II.DTI, 
      TL.LINENUMBER, 
      TL.TEXTLINE 
FROM ( ABC.ITD ITD 
     INNER JOIN 
      ABC.TEXTLINE TEXTLINE 
     ON (ITD.DTI = TEXTLINE.TEXTID)) 
    INNER JOIN 
     ABC.II II 
    ON (II.ITEMID = ITD.ITEMID) 
WHERE (II.FC = 'J') AND (TEXTLINE.TEXTLINE IS NOT NULL) 
ORDER BY ITD.DTI ASC 
+0

あなたがしようとしています列を単一の文字列に連結するか、列の集合に連結するか?あなたの実際の結果セットはどのように見えますか? –

+0

はい、4行にまたがっているテキスト行を1行に連結しようとしています。ですから、私の出力は以下のようになります:LANSOPRAZOLE | PREVACID CAP 15 MG | 3674 |患者さんが2011年2月に来院した場合は、ランソプラゾールオメプラゾールを服用しないでください。CLOPIDOGREL(プラビックス) – Shaji

答えて

1

あなたは、ルックアップし、テキスト行を連結する関数を作成する必要があります:

CREATE OR REPLACE FUNCTION FN_APPEND_TEXT(idText IN NUMBER) RETURN VARCHAR2 
IS 
    CURSOR crsText IS 
     SELECT TL.LINENUMBER, 
      TL.TEXTLINE 
     FROM ABC.TEXTLINE TL 
     WHERE TL.TEXTID = idText 
     AND TL.TEXTLINE IS NOT NULL 
     ORDER BY TL.LINENUMBER ASC; 

    strReturn VARCHAR2(4000); 
BEGIN 

    FOR recText IN crsText 
    LOOP 
     strReturn := strReturn || recText.TEXTLINE; 
    END LOOP; 

    RETURN strReturn; 

END FN_APPEND_TEXT; 

次に、関数を呼び出すために、あなたのSQLを変更します。

SELECT DISTINCT II.FC, 
     II.GN, 
     II.PB, 
     II.DTI, 
     FN_APPEND_TEXT(II.DTI) Instructions 
    FROM ABC.ITD II 
WHERE II.FC = 'J' 
ORDER BY II.DTI ASC; 
+0

ありがとうございます!あなたの助けが高く評価されています。 – Shaji