有如下的临时表
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
答案 0 :(得分:3)
如果你有SQL Server 2005+,你可以使用CTE和ROW_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
子句。