我试图让一个用户保留每个位置有多个用户的位置。我还想保留上次更新的用户 这是我的数据
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
答案 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)