我正在使用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如何添加删除以上查询?
;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)
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |