当前位置: 首页 > 面试题库 >

合并-有条件的“淲匹配然后更新”。

王刚毅
2023-03-14
问题内容

下图中的高亮显示了我要实现的逻辑。我意识到语法不正确。

只有在目标表中其列之一的值为空且源表中的对应值不为空的情况下,才可以有条件地更新MERGE语句中的记录吗?

您如何建议重写?

MERGE dbo.input_311 AS [t]
USING dbo.input_311_staging AS [s]
ON ([t].[unique key] = [s].[unique key])
WHEN NOT MATCHED BY TARGET
    THEN INSERT(t.[Created Date]) VALUES(s.[Created Date])
WHEN MATCHED
    THEN UPDATE SET(t.[Created Date] = s.[Created Date]
                WHERE s.[Created Date] IS NOT NULL
                AND t.[Created Date] IS NULL)
OUTPUT deleted.*, $action, inserted.*;
GO

问题答案:

您也许可以使用When Matched And (s.[Created Date] Is Not Null And t.[Created Date] Is Null) Then Update ...



 类似资料:
  • 示例我有这两个csv,如何覆盖列的值在a.csv或替换,如果它匹配列中的字符串在a.csv和b.csv 如何输出:或者如何覆盖 我正在尝试使用熊猫,但我不知道接下来会发生什么

  • 首先,当你的手机上有应用程序,并且这个应用程序在play store上有更新时,google只返回更新的部分代码而不是整个包(例如3毫克而不是8毫克,这是整个包的大小)。我研究并发现,在android端,google play提取本地应用程序并合并从play store下载的更新文件,生成新的apk,然后安装新的apk和更新。假设play store没有apk keystore来签署新的apk,但

  • 假设在$facet阶段之后,我得到了一个包含两个数组的结果:roomInfo和hotelInfo。 看起来是这样的: 预期结果 我想要这样的输出: 基本上,在匹配roomInfo的ID后,将roomInfo中的预订属性添加到hotelInfo的roomDetails字段中。 如何实现这些用例? 谢谢

  • 我一定错过了什么。我正在计算一个列表,想跳过特定的数字,所以我做了一个switch语句: 以下是输出: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 22 23 24 25 26 27 28 29 30 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 48 50 52 53 注意,44出现了,尽管我没

  • 问题内容: 我需要将此查询复制到 JPA CriteriaBuilder 代码中: 这是我的代码: 现在,如何将其添加到析取谓词中?在不采取为PARAM。 谢谢 问题答案: 所以这就是我所做的,并且看起来工作正常:

  • 问题内容: 我如何结合这两个更新语句: 问题答案: 您可以使用CASE表达式,如下所示: