我有以下表结构。
我只想更新子 ID 到所有为空和 的行原始行号 增加 1 并且 序列号 上升 1。
RawlineNumber Claimid SubId SeqNumber
1 6000 A100 1
2 6000 NULL 2
3 6000 NULL 3
10 6000 A200 1
11 6000 NULL 2
25 6000 A300 1
26 6000 NULL 2
27 6000 NULL 3
我要更新
子 ID 的 原始行号 2 和 3 与 A100,
子 ID 的 原始行号 11 与 A200,
子 ID 的 原始行号 26 和 27 与 A300。
我有一个可以完成这项工作的游标,但我可以有一个 CTE 来处理它吗?
最佳答案
UPDATE m
SET subid = q.subid
FROM mytable m
CROSS APPLY
(
SELECT TOP 1 subid
FROM mytable mi
WHERE mi.rawLineNumber < m.rawLineNumber
AND mi.subid IS NOT NULL
ORDER BY
rawLineNumber DESC
) q
WHERE m.subid IS NULL
关于sql-server-2005 - 使用 CTE 代替 Cursor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6734369/