我有一个表变量,我需要从中删除行。此查询显示表的内容:
SELECT
useractionId,
userId,
actionId,
ROW_NUMBER() OVER (PARTITION BY userid, actionId ORDER BY dateOfApplication ASC) AS applicationOrder, -- put into order of application (earliest first)
dateOfApplication
FROM
@tbl_appliedhistory;
结果如下,并提供用户每次完成操作的记录:
编辑 - 在只有一个用户 ID/操作 ID 组合的末尾添加了额外的行
useractionId userId actionId applicationOrder dateOfApplication
----------- ----------- ----------- -------------------- -----------------------
7665 3 2479 1 2013-09-08 18:17:23.953
7675 3 2479 2 2013-09-08 18:18:56.063
7685 3 2479 3 2013-09-08 18:21:21.487
8286 3 2695 1 2013-11-07 09:28:03.817
8287 3 2695 2 2013-11-11 13:47:11.337
8289 3 2695 3 2013-11-11 13:47:56.390
8291 3 2695 4 2013-11-11 13:48:11.957
8284 87453 2695 1 2013-11-06 15:08:40.823
8285 87453 2695 2 2013-11-06 15:09:26.167
8288 87453 2695 3 2013-11-11 13:47:11.337
8290 87453 2695 4 2013-11-11 13:47:56.390
8291 89000 3000 1 2013-11-12 15:50:50.000
对于userId
/actionId
列值的每个组合,我需要删除除最高值之外的所有值applicationOrder
(该特定的最新完成的操作actionId
)。因此,一旦删除,剩余的行将是:
useractionId userId actionId applicationOrder dateOfApplication
----------- ----------- ----------- -------------------- -----------------------
7685 3 2479 3 2013-09-08 18:21:21.487
8291 3 2695 4 2013-11-11 13:48:11.957
8290 87453 2695 4 2013-11-11 13:47:56.390
8291 89000 3000 1 2013-11-12 15:50:50.000
这些结果显示用户完成每个操作的最新日期。我将不胜感激在识别这些行方面的任何帮助。