【发布时间】:2021-05-18 20:01:44
【问题描述】:
另一位程序员试图修复我们的 Powershell 脚本,结果在与一台机器关联的一个表中出现了几百万条额外记录。大多数记录似乎按日期分组并重复。我能够使用“Group by”表达式找到其中的大多数,但无法使用 Update mytable set PartEval = 'Dup1' where ..... etc 来标记它们。
下面的按代码分组有效,并给了我那些重复的。大多数不属于的都被 DateRan 列复制
SELECT DateRan, PartEval, count(*) as cntBad
FROM MyTable
WHERE MachineNr = @MachineNr
AND (DateRan >= some_date
AND DateRan <= Some_Date_Plus2)
GROUP BY DateRan, PartEval
HAVING COUNT(*) > 1;
UPDATE mytable
WHERE EXISTS (SELECT DateRan, PartEval, COUNT(*) AS cntBad
FROM MyTable
WHERE MachineNr = @MachineNr
AND (DateRan >= some_date
AND DateRan <= Some_Date_Plus2)
GROUP BY DateRan, PartEval
HAVING COUNT(*) > 1)
我尝试了上面的代码和WITH CTE 表达式,还尝试更新 my_table Where Exists(上面的代码)。但它只将 Dup1 设置为设置了日期范围的每条记录,而不仅仅是 Group By 表达式找到的那些记录。
关于如何查找和标记具有重复 dateran(日期时间列)的这些内容有什么建议吗?
【问题讨论】:
标签: sql-server-2016