2011-09-08 14 views
1

2つの中間結果セットがcreate viewステートメントにあります。結果セットは2つの異なる結合パスから派生し、それらを結合する必要があります。しかしそれはここで終わらない。 ID列は一意である必要があるため、最初の結果セットと同じIDを含む結果セット2の行が最初の結果セットの同じ行を上書きする必要があります。2つの結果セットを結合し、1つの列をユニークにします。

は私がここにこれを説明してみましょう:

Result set 1 

ID Value 
------------ 
1  a 
3  a 
5  a 
6  a 
7  a 
8  a 

Result Set 2 

ID Value 
------------ 
2  b 
4  b 
5  b 
7  b 
9  b 
10 b 

End result set 
ID value 
------------ 
1  a 
2  b 
3  a 
4  b 
5  b 
6  a 
7  b 
8  a 
9  b 
10 b 

私はこれにアプローチする方法がわからないです。 Union/except/intersectは重複したIDを作成するので、それは良いことではありません。

答えて

1
SELECT COALESCE(set2.ID, set1.ID) AS ID, 
     CASE WHEN set2.ID IS NULL THEN set1.Value ELSE set2.Value END AS Value 
FROM set1 
    FULL JOIN set2 
     ON set1.ID = set2.ID 
+0

極端な賢さ。 – deutschZuid

1

結果セット1の要素を削除してみてください。ここで、idは結果集合2の中で共用体より前です。

+0

Hmm ..ビューでどのようにしますか? – deutschZuid