2017-09-13 35 views
-4

我試圖逐行比較兩個select語句的結果。 因此,例如表如下所示:MSSQL按行比較兩個表

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

現在選擇看起來像

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

現在的表應該比較逐行,如果GUID是在雙方選擇相同的同一條線。如果是這樣,則返回true,否則返回false。

編輯: 目標是檢測列GUID和名稱的更改。 NUMBER列是一個自動增量值,只有在創建條目時才增加。 VERSION是一個時間戳,每次更新條目時都會更改。現在,比較的目標是從上面選擇查詢來確定對錶進行更改,因爲如果條目順序不同,則發生更改。

感謝, shirocko

+1

一次,什麼是你想實現 - 什麼問題是你想解決? – jarlh

+0

我改變了上面的描述。我希望它有幫助。 – shirocko

回答

0

如果你想知道,如果所有的行排序,兩列,那麼相同的:

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