2017-09-13 8 views
-4

2つのSELECTステートメントの結果を行ごとに比較しようとしています。 だから、たとえばテーブルには、次のようになります。MSSQL 2つのテーブルを行ごとに比較します

GUID | NUMBER (auto inc) | VERSION (timestamp) | Name 
A | 4     | 1     | Robert 
B | 9     | 2     | John 
C | 14    | 3     | Magret 

GUIDがで両方の選択で同じであれば、今、選択は

select guid from table order by number; 
select guid from table order by version; 

ように見える今のテーブルは、行単位で比較した行でなければなりません同じ行。そうであればtrueを返し、そうでない場合はfalseを返します。

編集: 目的は、列GUIDとNAMEの変更を検出することです。 NUMBER列は自動インクリメント値で、エントリの作成時にのみ増加します。 VERSIONはタイムスタンプで、エントリが更新されるたびに変更されます。ここでは、エントリの順序が異なる場合に変更が発生したため、上の両方の選択クエリを比較してテーブルを変更することを目標としています。

おかげで、 shirocko

+1

つのより多くの時間を、何を達成しようとしている - とどのようなあなたは解決しようとしていますか? – jarlh

+0

上記の説明を変更しました。私はそれが助けて欲しい – shirocko

答えて

0

あなたはすべての行が2列で同じことを注文している場合は、その後、知りたい場合は、次の

select (case when count(*) = sum(case when rnk_1 = rnk2 then 1 else 0 end) 
      then 'All Same' 
      else 'Different' 
     end) 
from (select t.*, 
      rank() over (order by number) as rnk_1, 
      rank() over (order by version) as rnk_2 
     from t 
    ) t; 
+0

ありがとう、それは多くの助けになります。 – shirocko

関連する問題