2016-04-01 9 views
0

一部の列に基づいて重複を見つけ、似ていない値を取得して1行に追加するにはどうすればいいですか? Oracle Sqlが重複を見つけて、この行でピボットする列の値を選択します。

は基本的に

Last Name, House Number, Name, hobby 
Scott,  100,   Peter, chess 
Scott,  100,   John, scrabble 

私は今、一時テーブルを作成し、この

Last Name, House Number, Name, Name2, hobby 
Scott,  100,   Peter, John, chess 

注意をしたい:データベース内に二つ以上の名前が存在する場合があります。しかし、私たちはチェス/スクラブルの趣味のペアがほしいだけです。テンポラリテーブルは、他のものが推測できる1つの趣味(最初の名前に関連付けられていても問題ではありません)を持つ必要があります。

この表この

を行うための最も効率的な方法をスクロールし、約100万レコードを持つことができますどのようなものです。 (これは日付で索引付けされ、各日付は1億レコードを持つことができます)。ピボットが働くかもしれませんが、おそらく高価なのでしょうか?

+0

気になる名前は2つだけですか?テーブルには特定の列が必要です。 –

答えて

0
select coalesce(t1.LastName, t2.LastName), 
     coalesce(t1.HouseNumber, t2.HouseNumber), 
     t1.Name, t2.Name, coalesce(t1.hobby, t2.hobby) 
from (select * from tablename where hobby = 'chess') t1 
full outer join 
    (select * from tablename where hobby = 'scrabble') t2 
    using (LastName,HouseNumber) 
関連する問題