使用SQL删除Dept中有多个用户的位置

时间:2015-01-28 20:58:58

标签: sql sql-server tsql

我试图让一个用户保留每个位置有多个用户的位置。我还想保留上次更新的用户 这是我的数据

ID  Location   REGION    LastUpdate
1     CLT       NA       1/15/2014    
3     CLT       NA        7/02/2015   
8     NY        NA        03/03/2000
11    NY        NA        04/8/2015

期望的结果

ID  Location   REGION    LastUpdate  
3     CLT       NA        7/02/2015   
11    NY        NA        04/8/2015

2 个答案:

答案 0 :(得分:1)

假设SQL Server 2005 +:

;WITH CTE AS
(
    SELECT *,
           RN = ROW_NUMBER() OVER(PARTITION BY Location ORDER BY LastUpdate DESC) 
    FROM dbo.YourTable
)
SELECT *
FROM CTE
WHERE RN = 1;

如果要删除其他行,则应执行以下操作:

;WITH CTE AS
(
    SELECT *,
           RN = ROW_NUMBER() OVER(PARTITION BY Location ORDER BY LastUpdate DESC) 
    FROM dbo.YourTable
)
DELETE FROM CTE
WHERE RN > 1;

答案 1 :(得分:0)

使用GROUP BY LOCATION, Region,然后删除该集合中没有MAX lastupdate的所有其他行。

WITH CTE AS (SELECT MIN(ID), LOCATION, REGION, MAX(lastUpdate)
    FROM YOURTABLE 
    GROUP BY LOCATION, REGION)
    DELETE FROM YOURTABLE
    WHERE NOT EXISTS (SELECT * FROM CTE WHERE A.ID=CTE.ID)
相关问题