我有以下表结构。
我只想将 SubId 更新为所有行,其中 RawLineNumber 升 1, SeqNumber 升 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
我要更新
SubId of RawLineNumber 2 和 3 与 A100,
SubId of RawLineNumber 11 with A200,
SubId of RawLineNumber 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/