删除重复行SQL服务器

the*_*nna 2 sql sql-server

我正在使用SQL Server.我创建的SQL表有20000多行.我有使用以下查询过滤重复.

SELECT
    Entity,ExpenseType,Amount,Description,APSupplierID,ExpenseReportID,Employee,ExpenseDate,COUNT(*)
FROM
    TotalsByGLCenter
GROUP BY
    Entity,ExpenseType,Amount,Description,APSupplierID,ExpenseReportID,Employee,ExpenseDate
HAVING 
    COUNT(*) > 1
Run Code Online (Sandbox Code Playgroud)

现在我想从SQL Server删除Duplicate如何添加删除以上查询?

Mit*_*itz 6

;WITH cte
         AS (Select ROW_NUMBER() OVER  (PARTITION BY Entity,ExpenseType,Amount,Description,APSupplierID,ExpenseReportID,Employee,ExpenseDate ORDER BY ( SELECT 0)) RowNum
             FROM   TotalsByGLCenter)
    Delete FROM cte
    WHERE  RowNum > 1;
Run Code Online (Sandbox Code Playgroud)

上述查询中的"ROW_NUMBER()"返回结果集的分区中的行的序号,从1开始,每个分区的第一行."ORDER BY"子句确定将ROW_NUMBER值分配给分区中的行的顺序.此处使用"PARTITION BY"子句将结果集划分为分区;

新列RowNum显示重复行的行号.

如果您想查看重复的行,可以使用select而不是delete

   ;WITH cte
         AS (Select ROW_NUMBER() OVER  (PARTITION BY Entity,ExpenseType,Amount,Description,APSupplierID,ExpenseReportID,Employee,ExpenseDate ORDER BY ( SELECT 0)) RowNum,Entity,ExpenseType,Amount,Description,APSupplierID,ExpenseReportID,Employee,ExpenseDate 
             FROM   TotalsByGLCenter)
    Select * FROM cte
    WHERE  RowNum > 1;
Run Code Online (Sandbox Code Playgroud)