我想将3个表合并为一个表,以获取以下条件下的完整数据
这是我要从表2合并到测试中的示例代码。
MERGE INTO [dbo].[test] a
USING [dbo].[test2] b ON a.col1 = b.col1
WHEN MATCHED THEN
UPDATE
SET col1 = b.col1,
col2 = b.col2,
col3 = b.col3,
col4 = b.col4
WHERE col1 = '' OR col2 = '' OR col3 = '' OR col4 = '';
出现错误:
关键字“ where”附近的语法不正确。
答案 0 :(得分:1)
请尝试使用COALESCE函数,而不要使用where条件。如果遇到NULL,则COALESCE函数采用下一个值。
Merge into [dbo].[test] a
using [dbo].[test2] b
on a.col1 = b.col1
when matched then
update
set col2 = COALESCE(a.col2, b.col2),
col3 = COALESCE(a.col3, b.col3),
col4 = COALESCE(a.col4, b.col4);
因此,在修改后的代码中,如果表[dbo]。[test] col2为Null,则它将从[dbo]。[test2]中获取值。由于将使用COALESCE,因此可以合并任意数量的值。
答案 1 :(得分:0)
您可以显示表格结构吗?
您可以使用
UNION ALL
操作员点击此链接。
https://www.techonthenet.com/sql_server/union.php
将INNER JOIN
子句中的条件与UPDATE
和WHERE
语句的混合运算