Звучит так, будто это домашнее задание, поэтому я настороженно отношусь к коду прямо.
Хотя я могу дать указание, как решить вопрос. Вы используете рекурсивный CTE, где каждая итерация добавляет один к предыдущей итерации. Просто убедитесь, что установлена опция MAXRECURSION, если вы будете проверять числа> 101. Вы можете использовать скалярный подзапрос, чтобы связать представление с исходной таблицей:
WITH numbers ( n ) AS (
SELECT 0 UNION ALL
SELECT 1 + n FROM numbers WHERE n < (select number from a) -1)
SELECT n FROM numbers
OPTION ( MAXRECURSION 500) --example