【问题标题】:SQL - Using merge and counting the matched and non matched resultsSQL - 使用合并和计算匹配和不匹配的结果
【发布时间】:2017-01-30 09:30:55
【问题描述】:

因此,如果我要使用以下查询,我想知道匹配了多少行

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)

所以我想知道计数

  • 匹配
  • 来源不匹配
  • 与目标不匹配

我知道你可以计算输出,但如果我没记错的话,输出只考虑插入、更新和删除。

【问题讨论】:

  • 这是什么意思Within some of my matched statements I might use both insert and update or neither
  • @TheGameiswar 例如:匹配时将 a 插入 b 更新 c 删除 d。都在同一场比赛中。或者在同一场比赛中可能没有。
  • 匹配中只有一个语句可能。 msdn.microsoft.com/ru-ru/library/bb510625.aspx<merge_matched>, <merge_not_matched>
  • 这有帮助吗:made2mentor.com/2013/06/…

标签: sql sql-server merge count


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-23
    • 2021-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-14
    • 2018-06-09
    相关资源
    最近更新 更多