Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 工作2年后合并报表失败_Sql_Sql Server 2008_Tsql_Merge - Fatal编程技术网

Sql 工作2年后合并报表失败

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语句好几年了,但在10月6日它停止工作并抛出一个错误:

味精8672,第16级,状态1,第1行
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
。谢谢,你有找到副本的脚本想法吗?谢谢,你们找到了,我找到了。