Sql 工作2年后合并报表失败
我的脚本已经每天使用merge语句好几年了,但在10月6日它停止工作并抛出一个错误: 味精8672,第16级,状态1,第1行Sql 工作2年后合并报表失败,sql,sql-server-2008,tsql,merge,Sql,Sql Server 2008,Tsql,Merge,我的脚本已经每天使用merge语句好几年了,但在10月6日它停止工作并抛出一个错误: 味精8672,第16级,状态1,第1行 MERGE语句多次尝试更新或删除同一行。当目标行与多个源行匹配时,会发生这种情况。MERGE语句不能多次更新/删除目标表的同一行。优化ON子句以确保目标行最多匹配一个源行,或使用GROUP BY子句对源行进行分组 我的脚本看起来像: MERGE INTO dbo.energydata AS target USING dbo.temp_energydata AS sourc
MERGE语句多次尝试更新或删除同一行。当目标行与多个源行匹配时,会发生这种情况。MERGE语句不能多次更新/删除目标表的同一行。优化ON子句以确保目标行最多匹配一个源行,或使用GROUP BY子句对源行进行分组 我的脚本看起来像:
MERGE INTO dbo.energydata AS target
USING dbo.temp_energydata AS source ON target.webmeterID = source.webmeterID
AND target.DateTime = source.DateTime
WHEN MATCHED THEN
UPDATE
SET target.kWh = source.kWh
WHEN NOT MATCHED BY TARGET THEN
INSERT (webmeterID, DateTime, kWh)
VALUES (source.webmeterID, source.DateTime, source.kWh);
它基本上从temp_表(temp_energydata)获取数据,并将其与主表(energydata)合并。它使用merge,因为temp表每天都包含重复数据,merge
将防止重复错误
我意识到我必须提供更多的信息,所以如果你能让我知道如何调试这个,那就太好了。你的临时表中有重复的条目 运行此查询以获取这些重复项
Select webmeterID, [DateTime]
From dbo.temp_energydata
Group by webmeterID, [DateTime]
Having count(*) > 1
临时表中有一个副本,即两个(或多个)记录的值相同,分别为
webmeterId
和DateTime
。谢谢,你有找到副本的脚本想法吗?谢谢,你们找到了,我找到了。