2016-09-11 5 views
-1

同じIDの2つの行を比較したいだけで、結果として違いを得たいだけです。2つの行を比較して同じテーブルの差分を取得するSQLクエリ

NOW

|---ID---||--Col_1--||--Col_2--||--Col_3--||--Col_4--| 
|----1---||----2----||----4----||----5----||----6----| 
|----1---||----3----||----4----||----4----||----6----| 
|----2---||----2----||----3----||----3----||----2----| 

RESULT

|---ID---||--Col_1--||--Col_2--||--Col_3--||--Col_4--| 
|----1---||----3----||---NULL--||----4----||---NULL--| 


P.S:私はあなたの質問のcorreを解釈していた場合、私は、SQL Server 2012の

+0

使用しているデータベースであなたの質問にタグを付けます。 –

+0

'col_1'に' 3'を、 'Col_3'に' 4'をなぜ選択したのですか? –

+0

'Col_1'に' 2'、 'Col_3'に' 5'を選ぶクエリを作成できます'。私は違いがほしいだけです。 @Prdp –

答えて

1

を使用していますctlyの場合、同じidの行を結合して、次の規則を適用したいとします。

  • 値が同じ場合は、その値を行に入れます。
  • 値が異なる場合は、NULLを入力してください。
  • ローが1つしかない場合は、idを含めないでください。

これは、いくつかのフィルタリングと比較ロジックを集約クエリです:

select id, 
     (case when min(col1) = max(col1) then min(col1) end) as col1, 
     . . . 
from t 
group by id 
having count(*) > 1; 
+0

うわー、私はいくつかの複雑な参加を考えています –

+0

あなたはそれを取得していないと思います。 (1)値がDIFFERENTの場合は、値を行に入れます。 (2)値がSAMEの場合は、NULLを入れます。 @Gordon Linoff –

+2

@KevalPandya - あなたの質問を正しく読んでください:D。同じIDの値が異なる場合は、NULLを保持しています –

関連する問題