2017-02-01 54 views
1

我有兩個表使用相同的結構填充到2個不同的表中:MST3_CURR和MST4_CURR。帳戶被填充到兩個表中的一箇中;每張桌子都擁有處於不同'狀態'的賬戶。爲了生成一個完整的賬戶列表,這些表格需要完全加入,併爲所拉取的賬戶提供最新的數據。Oracle UNION ALL沒有返回完整集

有幾個其他表遵循完全相同的方法,我使用UNION ALL運營商沒有問題。然而,由於某種原因,這兩個表時,我執行UNION ALL我收到的記錄,它是在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) 
; 

我很茫然尋找任何形式的答案,以這種奇特的行爲,甲骨文12C是參展。請讓我知道是否有信息缺失,這將有助於回答我的問題。

謝謝。

+1

這些正常的表,或他們也許看到?他們還有什麼不尋常的地方嗎?查詢是否並行運行? –

+1

'UNION ALL'不是加入!如果您對此感到困惑,我們怎麼能相信您所說的其他內容其實都是準確的? – mathguy

+0

@亞歷克斯:桌子上沒什麼不尋常的。這些不是意見或物化意見。 –

回答

0

以下是什麼返回[m3首先,然後m4第一] ??

{ 
WITH cchm_d_curr AS (
    SELECT 'm3' src, m3.* FROM hcus_raw.cchm_d_mst3_curr m3 
    UNION ALL 
    SELECT 'm4' src, m4.* FROM hcus_raw.cchm_d_mst4_curr m4 
) 
SELECT src, chd_account_number, chd_current_balance FROM cchm_d_curr 
WHERE 
    chd_account_number IN (4700121500023998, 4700121500090430, 4700121500044101, 4700121500250492, 4700121500250013) 
; 
} 
+0

此查詢語句的結果會導致結果中存在來自_m4_的** 0 **記錄。如果我顛倒了_WITH_子句中的順序,那麼結果集只包含_m4_ –