Вы должны быть в состоянии сделать это с рекурсивным CTE
. Вы захотите выполнить рекурсию по ряду (это обязательно завершится), а затем просто продолжать увеличиватьновый столбец rownumber каждый раз, когда вы повторяете, сбрасывается при первом ударе.Я считаю, что ответ ниже должен работать.Я бы сохранил предыдущий запрос во временной таблице
WITH FinalValues (RowNumber, Key, MRN, HospCode, adm_date, sep_date,
sequence, NewRowNum)
AS
(
-- Anchor member definition
SELECT RowNumber, Key, MRN, HospCode, adm_date, sep_date,
sequence, 1 AS NewRowNum
FROM PreviousQuery
WHERE RowNumber = 1
UNION ALL
-- Recursive member definition
SELECT P.RowNumber, P.Key, P.MRN, P.HospCode, P.adm_date, P.sep_date,
P.sequence,
CASE WHEN P.sequence = 'First' THEN 1 ELSE NewRowNum + 1 END AS NewRowNum
FROM PreviousQuery AS P
INNER JOIN FinalValues
ON FinalValues.RowNumber = P.RowNumber + 1
)
-- Statement that executes the CTE
SELECT *
FROM FinalValues;
GO