sql查询,它将使用增量值更新记录

时间:2011-12-01 05:44:57

标签: sql sql-server stored-procedures

有如下的临时表

 1. id  empid  triggerstatus
     1   2881     null 
     2   2881     null
     3   2881     null
     4   2882     null

我需要一个sql查询,它将动态更新triggerstatus 如果empid被引用两次,三次等等,则触发器数据+ 1。

我的结果应该看起来像

id  empid  triggerstatus
1   2881     1
2   2881     2
3   2881     3
4   2882     1

1 个答案:

答案 0 :(得分:3)

如果你有SQL Server 2005+,你可以使用CTEROW_NUMBER窗口函数:

WITH cte AS
(
   SELECT id, empId, triggerStatus
      , ROW_NUMBER() OVER (PARTITION BY empId ORDER BY id ASC) AS RowNumber
   FROM yourTable
)
UPDATE t
SET triggerStatus = RowNumber
FROM yourTable AS t
INNER JOIN cte ON t.id = cte.id

如果有一些您不想更新WHERE的记录,则可能需要添加triggerStatus子句。