2016-11-18 8 views
0

このデータ取得の課題を解決するにはどうすればよいか考えません。同じ構造を持つ2つのテーブルから重複したデータを取得して、他のテーブルに優先します:Oracle

enter image description here

私はこの2つのテーブルを持っている:MY_DATAMY_DATA_CHANGEを私のOracleデータベースに。 私はデータにこのようないくつかのものを選択したい:

SELECT ALL COLUMNS 
FROM MY_DATA 
WHERE ID IN (1,2,4,5) FROM MY_DATA 
    BUT IF ANY ID IS PRESENT IN (1,2,4,5) IN MY_DATA_CHANGE 
    THEN USE ROW FROM MY_DATA_CHANGE 

だから私の全体的な結果はのようになります。

このクエリをしようとしているとして、私は唯一、SQL保管されていない手順を使用することができます

enter image description here

非常に大きな別のクエリ(レガシーコードは長らく書かれています)の一部となります(Crystalレポートツールでレポートを作成するために使用されます)。

だから助けてください。私の列データにCLOBが含まれていて、通常のUNIONロジックが機能しません。

どうすればよいですか?

私はそれを行うことを選択するような方法は、2つのテーブル間 LEFT JOIN経由で

答えて

1
SELECT 
    m.Id 
    ,COALESCE(c.CLOB1,m.CLOB1) as CLOB1 
    ,COALESCE(c.CLOB2,m.CLOB2) as CLOB2 
FROM 
    MY_DATA m 
    LEFT JOIN MY_DATA_CHANGE c 
    ON m.Id = c.Id 
WHERE 
    m.ID IN (1,2,4,5) 

、その後COALESCE()を使用しています。

+0

Thankxたくさんのバディーあなたは私の人生をシンプルにしました。私はこの問題で緊張していました。 – user3769778

+0

@ user3769778あなたの歓迎幸運 – Matt

関連する問題