gpt4 book ai didi

SQL Server 2008 Merge 语句多匹配条件

转载 作者:行者123 更新时间:2023-12-04 19:20:01 24 4
gpt4 key购买 nike

我正在尝试以增量方式引入 claim 数据。我在 System 上匹配源和目标( varchar ) 和 ClaimNum ( varchar ),使用其他列的散列来检查更改。

我有我的合并语句(简化):

MERGE target
USING source ON target.System = source.System
AND target.ClaimNum = source.ClaimNum

WHEN MATCHED AND target.HashValue <> source.HashValue
THEN {update claim record data}

WHEN MATCHED AND target.HashValue = source.HashValue
THEN {update claim record as "checked"}

WHEN NOT MATCHED
THEN {insert new claim record}

但是,我不能有 2 个匹配的条件。我还可以如何使用合并语句完成此操作?

这用于 SQL Server 2008。

最佳答案

您可以使用 CASEIIF (SQL Server 2012) 添加自定义逻辑:

MERGE target
USING source
ON target.System = source.System
AND target.ClaimNum = source.ClaimNum
WHEN MATCHED THEN
UPDATE SET column_name =
CASE WHEN target.HashValue = source.HashValue THEN ...
ELSE ...
END
WHEN NOT MATCHED THEN {insert new claim record}

编辑:

如果只是 UPDATE您可以使用多个条件/设置为相同的值来跳过:
...
UPDATE SET column_name1 =
CASE WHEN condition1 THEN ...
ELSE column_name1
END
,column_name2 =
CASE WHEN condition1 THEN ...
WHEN condition2 THEN ...
ELSE column_name2
END
,...

笔记:

如果源/目标 HashValue可以为空,您应该使用 COALESCE/ISNULL/adding OR target.HashValue IS NULL... 处理它.比较运算符不适用于 NULL .

关于SQL Server 2008 Merge 语句多匹配条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38574695/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com