2016-06-29 6 views
0

ORACLE問合せを作成するには、次の要件を満たす必要がありますか。選択した重複レコードでテーブルを結合するにはどうすればいいですか? (oracle10g)

問題はいくつかのSQL結果に同じIDが存在する場合、そのIDのレコードがどのように空白またはNULLでないのかを得ることができます。

 
Pattern(1) 
SQL1 => RESULT1 => ID  NAME 
        ----- ------ 
         001 
         002 
         003

SQL2 => RESULT2 => ID NAME ----- ------ 003 NAME1

SQL3 => RESULT3 => ID NAME ----- ------ 003 NAME2

 
Pattern(2) 
SQL1 => RESULT1 => ID  NAME 
        ----- ------ 
         001 
         002 
         003 NAME1

SQL2 => RESULT2 => ID NAME ----- ------ 003

SQL3 => RESULT3 => ID NAME ----- ------ 003 NAME2

 
Pattern(3) 
SQL1 => RESULT1 => ID  NAME 
        ----- ------ 
         001 
         002 
         003

SQL2 => RESULT2 => ID NAME ----- ------ 003 NAME1 003 NAME2

SQL3 => RESULT3 => ID NAME ----- ------

どのように私はこれらの3つの結果は、次のような結果になることを参加することができますか?

 
         ID  NAME 
        ----- ------ 
         001 
         002 
         003 NAME1 
         003 NAME2 

答えて

1

作業

with tbl(id,name) as 
(query1 
union all 
query2 
union all 
query 3 
) 
select * From tbl where name is null 
and id not in 
    (select id from tbl where name is not null) 
union all 
select * from tbl where name is not null 

私が持っています作成したサンプル例

with tbl(id,name) as 
(select 1,null from dual union all 
select 2,null from dual union all 
select 3,null from dual union all 
select 3,'NAME1' from dual union all 
select 3,'NAME2' from dual) 

select * From tbl where name is null 
and id not in 
    (select id from tbl where name is not null) 
union all 
select * from tbl where name is not null 

出力

id name 
--------- 
1 
2 
3 NAME1 
3 NAME2 
+0

ご回答いただきありがとうございます! – hmmh

2

1つのオプションは一緒にUNIONSQL2SQL3テーブルも、その後、SQL1に戻って、この結果を参加になります。このシナリオのため

SELECT t1.ID, t1.NAME 
FROM SQL1 t1 LEFT JOIN 
(
    SELECT ID, NAME 
    FROM SQL2 
    UNION ALL 
    SELECT ID, NAME 
    FROM SQL3 
) t2 
    ON t1.ID = t2.ID 
+0

はあなたの仲間に感謝します。私の誤解を招く質問に申し訳ありません。各SQLの結果は異なる場合があります。私は質問を更新しました。質問は、いくつかのSQL結果に同じIDが存在する場合、そのIDのレコードをどのように取得することができますか?Nameは空でもNULLでもありません。 – hmmh

+0

あなたの質問は不明です。入力と予想される出力についてサンプル_テーブル_(図なし)を再度表示して更新してください。 –

関連する問題