У меня есть таблица в следующем формате:Определение последовательных строк
cId seq
--- ---
A 1
A 2
A 4
A 5
B 8
B 9
A 12
A 13
Я хотел бы написать запрос, который будет производить еще одну таблицу, которая выглядит как:
cId seq consecutive
--- --- -----------
A 1 1
A 2 1
A 4 2
A 5 2
B 8 3
B 9 3
A 12 4
A 13 4
То, что я пытаюсь do - это идентификаторы последовательных значений seq, которые имеют одинаковый cId, а затем их число.
Я думал об использовании функции Lag, чтобы определить предыдущее значение seq, а затем установить последовательный столбец, но не знаю, как увеличить значение, когда я столкнулся с следующим перерывом.
SELECT [cId],
[Seq],
CASE WHEN [Seq] - 1 = LAG([Seq], 1, [Seq]) OVER (ORDER BY [Seq]) THEN 1
ELSE 2 END as consecutive
FROM #ConsecutiveData
Этот запрос поставит 2 рядом с началом каждой последовательности. Это самое близкое, что я пришел.
Вы используете '' MySQL' или Microsoft SQL'? –