当前位置: 首页 > 面试题库 >

如何使用OVER子句删除SQL Server中的重复行?

南门鸿畴
2023-03-14
问题内容

这是我表中的列:

Id
EmployeeId
IncidentRecordedById
DateOfIncident
Comments
TypeId
Description
IsAttenIncident

我想删除重复的行,这些行中的EmployeeId, DateOfIncident, TypeIdDescription是相同的-只是为了澄清-
我确实想保留其中之一。我认为我应该将OVER子句与一起使用PARTITION,但不确定。

谢谢


问题答案:

如果要保留重复组中的一行,可以使用ROW_NUMBER。在这个例子中,我保持最低的行Id

WITH CTE AS 
(
    SELECT rn = ROW_NUMBER() 
                OVER( 
                  PARTITION BY employeeid, dateofincident, typeid, description 
                  ORDER BY Id ASC), * 
    FROM dbo.TableName
) 
DELETE FROM cte 
WHERE  rn > 1


 类似资料:
  • 我有这个where子句: 但在我的数据库中,没有一个社区叫做闹市区,而是闹市区。我的问题是我能从cc中删除空白吗。我的where子句中的社区是where ONTROUNT=市区?

  • 问题内容: 这个问题已经在这里有了答案 : SQL中的TRUNCATE和DELETE有什么区别 (32个答案) TRUNCATE vs DELETE FROM的利弊 (11个答案) 6年前关闭。 关于mysql / sqlserver,我的脑海里发生了一件事,即 删除/截断 哪个更好更快? 在哪里使用删除? 在哪里使用截断? 问题答案: 删除 DELETE是DML命令。 使用行锁执行DELETE语

  • 我构建了一个使用BingAPI下载数据集的代码。当我在终端上运行它时,它返回以下错误: 所以我升级了Numpy,但没有用 那么我该怎么做呢?

  • 我有一个带有重复ID的熊猫数据框。下面是我的数据框 如何仅删除类型为

  • 问题内容: 尝试从Sybase到Microsoft SQL进行OPENQUERY时,我遇到错误: 通过OPENQUERY和OPENROWSET获得的结果集中不允许重复的列名。列名称“ PatientID”是重复的。 我建立的查询基于相似的entryID和PatientID联接了2个表。 例如: 当然,真正的查询不仅包含更多信息。 是否有重命名或删除AdmID和PatID列之一的好方法? 我尝试过: