2017-01-30 59 views
1

所以SQL - 使用合併,如果我是使用下面的查詢,我想看看有多少行已匹配計算匹配和不匹配的結果

MERGE (targetTable) AS t 
USING (sourceTable) AS s 
ON t.ID = s.ID 
WHEN MATCHED THEN 
    (some statements) 
WHEN NOT MATCHED BY SOURCE THEN 
    (some statements) 
WHEN NOT MATCHED BY TARGET THEN 
    (some statements) 

所以我想知道

  • 匹配
  • 計數不受源
  • 匹配未被目標匹配

我知道你可以對輸出進行計數,但是如果我沒有記錯,輸出只能說明插入,更新和刪除。

+0

這是什麼意思'在我的一些匹配的語句我可能會同時使用INSERT和UPDATE或neither'。 – TheGameiswar

+0

@TheGameiswar例如:匹配時,插入a到b更新c刪除d。全部在相同的比賽中。或者在相同的比賽中可能沒有。 – Migz

+0

比賽中只有一個可能的聲明。 https://msdn.microsoft.com/ru-ru/library/bb510625.aspx請參閱'','' –

回答

1

可以合併之前運行是這樣的:

SELECT SUM(CASE WHEN t.ID = s.ID THEN 1 ELSE 0 END) as [Matched], 
     SUM(CASE WHEN s.ID IS NULL THEN 1 ELSE 0 END) as [NotMatchedByTarget], 
     SUM(CASE WHEN t.ID IS NULL THEN 1 ELSE 0 END) as [NotMatchedBySource] 
FROM targetTable AS t 
FULL OUTER JOIN sourceTable AS s 
    ON t.ID = s.ID