按列除去最后一个条目

时间:2015-02-13 15:13:32

标签: sql-server

我想选择不同的NAME并删除ID<>的行该名称的最大值(ID)。

表格如下......

NAME                    DATE                    ID
BudgetX.dbo.Persons 2015-02-13 13:53:38.780 1
BudgetX.dbo.Persons 2015-02-13 13:53:38.780 2
BudgetX.dbo.ILFS        2015-02-13 14:29:55.347 3
BudgetX.dbo.ILFS        2015-02-13 14:29:55.347 4
BudgetX.dbo.ILFS        2015-02-13 14:30:10.813 5

我想删除除第2行和第5行以外的所有内容。

任何想法都赞赏。

谢谢,RR

1 个答案:

答案 0 :(得分:3)

您可以使用CTE + ROW_NUMBER

WITH CTE AS
(
   SELECT Name, Date, ID,
          RN = ROW_NUMBER() OVER (PARTITION BY Name ORDER BY ID DESC)
   FROM dbo.TableName
)
DELETE FROM CTE WHERE RN > 1