SQL ID在每个ID的不同日期之后删除

时间:2015-02-27 23:07:41

标签: sql sql-server delete-row

我正在执行转换分析,只需查看每个User_ID的第一次转换后的活动。

我可以使用此查询找到每个用户的第一次转换时间:

select min([Time]), [User_ID]
from [Table_1]
where [Event_Type] = 2 --just a filter for conversions
group by [User_ID]  

但是,现在我想删除[Table1]中每个[User_ID]的所有数据,在特定的分钟([时间]之后)。我该怎么做?

感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

您可以使用CTE + ROW_NUMBER

With CTE AS
(
   SELECT [Time], [User_ID],
          RN = ROW_NUMBER() OVER (Partition By [User_ID] ORDER BY [Time])
   FROM Table1
   WHERE [Event_Type] = 2
)
DELETE FROM CTE WHERE RN > 1

如果您不想删除除一条记录以外的所有记录,但所有记录的时间与每个用户的最短时间不同(如果有关系),请改用DENSE_RANK。如果您想查看要删除的内容,请使用SELECT *