Sql server 2012 SQL Server合并两个表记录
我有两张新桌子和两张旧桌子 旧表记录: A、B、C、D、E、F、G、H列 约翰测验| 1234567 | 1 | 2 | 1 | 3 | 1 |斯科特 新表格记录:Sql server 2012 SQL Server合并两个表记录,sql-server-2012,Sql Server 2012,我有两张新桌子和两张旧桌子 旧表记录: A、B、C、D、E、F、G、H列 约翰测验| 1234567 | 1 | 2 | 1 | 3 | 1 |斯科特 新表格记录: John Test | 1234567 | null | null | 2 | null | null | Scott 希望以这样的方式合并这些行,即 John Test | 1234567 | 1 | 2 | 2 | 3 | 1 | Scott 规则是如果存在旧记录,则采用旧记录,并在新记录中查找不包括null的更改。匹配行
John Test | 1234567 | null | null | 2 | null | null | Scott
希望以这样的方式合并这些行,即
John Test | 1234567 | 1 | 2 | 2 | 3 | 1 | Scott
规则是如果存在旧记录,则采用旧记录,并在新记录中查找不包括null的更改。匹配行基于B列(即1234567)两个表的记录数相同吗 如果是,请执行以下操作:
SELECT
ISNULL(New.A,Old.A),
ISNULL(New.C,Old.C),
ISNULL(New.D,Old.D),
ISNULL(New.E,Old.E),
ISNULL(New.F,Old.F),
ISNULL(New.G,Old.G),
ISNULL(New.H,Old.H),
FROM OldTable Old
INNER JOIN NewTable New
ON Old.B = New.B
SELECT
ISNULL(New.A,Old.A),
ISNULL(New.C,Old.C),
ISNULL(New.D,Old.D),
ISNULL(New.E,Old.E),
ISNULL(New.F,Old.F),
ISNULL(New.G,Old.G),
ISNULL(New.H,Old.H),
FROM OldTable Old
LEFT JOIN NewTable New
ON Old.B = New.B
UNION ALL
SELECT
New.A,
New.C,
New.D,
New.E,
New.F,
New.G,
New.H,
FROM NewTable New
LEFT JOIN OldTable Old
ON Old.B = New.B
WHERE
Old.B IS NULL
如果不是,并且您希望拥有所有记录,请执行以下操作:
SELECT
ISNULL(New.A,Old.A),
ISNULL(New.C,Old.C),
ISNULL(New.D,Old.D),
ISNULL(New.E,Old.E),
ISNULL(New.F,Old.F),
ISNULL(New.G,Old.G),
ISNULL(New.H,Old.H),
FROM OldTable Old
INNER JOIN NewTable New
ON Old.B = New.B
SELECT
ISNULL(New.A,Old.A),
ISNULL(New.C,Old.C),
ISNULL(New.D,Old.D),
ISNULL(New.E,Old.E),
ISNULL(New.F,Old.F),
ISNULL(New.G,Old.G),
ISNULL(New.H,Old.H),
FROM OldTable Old
LEFT JOIN NewTable New
ON Old.B = New.B
UNION ALL
SELECT
New.A,
New.C,
New.D,
New.E,
New.F,
New.G,
New.H,
FROM NewTable New
LEFT JOIN OldTable Old
ON Old.B = New.B
WHERE
Old.B IS NULL
你好我们需要额外的信息来帮助您。请阅读。e、 g.将两者结合起来的规则是什么?如果新表有值,则使用该值,否则使用旧表?我们如何在新旧行之间进行匹配?列名称是什么?