对所有SQL事情都很陌生,所以希望你能忍受我。
我有一种情况,我在一个临时表中有数据等待,该表有大约11列和100行。目标表包含大约27列和100行。
我正在尝试使用T-SQL脚本创建服务器代理作业,以便从登台表更新目标表,但仅限于所需的列。
Staging Table
Col1 - Col11
Destination Table
Col1 - Col27
我需要保留目标表中的“剩余”列,因为它们保存的是未由登台表提供的数据。
我还应该指出,登台表中的记录数量会随着时间的推移而持续增长,并且代理作业的计划将每小时查看登台表以进行更新。
这是我目前的脚本,它已成功完成,但目标表中的每一行都由登台表第一行中的数据填充。
e.g。分期表Col1 = David和Col2 = Smith。
执行下面的查询后,目标表中的所有行都包含每列记录的第1列和第2列中的David和Smith。
UPDATE DestTable
SET DestTable.Col1 = StagingTable.Col1,
DestTable.Col2 = StagingTable.Col2,
FROM StagingTable
我曾考虑使用WHERE
语句来匹配ID数据,但是对于在临时表中等待的任何新记录,目标表不会“识别”ID。
最后,登台表将为目标表提供新记录,对现有记录的更新以及要删除的记录。
提前致谢,并为“论文”道歉。
答案 0 :(得分:2)
self.assertInEmail
语句与UPDATE
和INNER JOIN
之间的StagingTable
相结合,可以为您提供所需的行为:
DestTable