同じ構造を持つ2つのテーブルが2つの異なるテーブル:MST3_CURRとMST4_CURRにあります。アカウントは2つのテーブルのいずれかに移入されます。各テーブルには異なる「状態」のアカウントがあります。アカウントの完全なリストを生成するには、テーブルを完全に結合し、アカウントの最新のデータを取得する必要があります。Oracle UNION ALLは完全なセットを返しません
UNION ALL
オペレータを使用しているのとまったく同じアプローチに従ったいくつかのテーブルがあります。しかし、私はUNION ALL
を実行するときに、これらの2つのテーブルが何らかの理由で、私は、アカウントのレコードを受け取るMST3_CURRが、他のアカウントで発見されはMST4_CURRであり、最終的なデータセットには存在しません。 UNION ALL
の注文を取り消してMST4_CURRに最初にMST3_CURRを付けた場合はその逆です。
WITH cchm_d_curr AS (
SELECT * FROM hcus_raw.cchm_d_mst3_curr
UNION ALL
SELECT * FROM hcus_raw.cchm_d_mst4_curr
)
SELECT chd_current_balance FROM cchm_d_curr
WHERE
chd_account_number IN (4700121500023998, 4700121500090430, 4700121500044101, 4700121500250492, 4700121500250013)
;
私は、Oracle 12cが展示されていることを、この特異な行動への答えのいずれかの種類を見つけることに途方に暮れていました。私の質問に答えるのに役立つ情報がない場合は教えてください。
ありがとうございます。
これらの通常のテーブルはありますか?それ以外に珍しいことはありますか?クエリは並行して実行されていますか? –
'UNION ALL'は結合ではありません!あなたがそれについて混乱している場合、あなたが言う他のすべてが実際に正確であることをどのように信頼できるでしょうか? – mathguy
@Alex:テーブルについては珍しいことは何もありません。これらはビューまたはマテリアライズド・ビューではありません。 –