У меня есть проблема, которую я не могу решить. Я могу получить интервал пропущенных чисел, но я не могу собрать их обратно из моей непрерывной серии.
Итак, если у меня есть ряд, определенный как [1000,1001,1002,1003,1005,1006,1008], я хочу извлечь три непрерывных ряда [1000,1001,1002,1003] и [1005,1006] и [1008]. Используя простой CTE, я получил 1003, 1005, 1006 и 1008, так что я могу получить конец и начало интервалов, но что теперь?
В конце я хочу таблицу, которая выглядит следующим образом:
|to |from |
|1000 |1003 |
|1005 |1006 |
|1008 |1008 |
У кого-нибудь есть умное решение, которым они хотят поделиться?
EDIT:
Вот (возможно, избыточный) CTE:
WITH MissingNumbers (FromNumber, ToNumber) AS
(
SELECT
T1.TaxLabelNumber,
T2.TaxLabelNumber
FROM TaxLabel T1
JOIN TaxLabel T2
ON T1.TaxLabelId + 1 = T2.TaxLabelId
WHERE T1.TaxLabelNumber <> T2.TaxLabelNumber - 1
)
SELECT * INTO #TempNumbers
FROM MissingNumbers
РЕДАКТИРОВАТЬ 2: Ofc. произошла смена планов, поэтому мне больше не нужно такое решение. Спасибо за все ответы, хотя! Очень полезно: D