CTE являются экспериментальными в H2 и имеют различные проблемы. На самом деле они вам здесь не нужны. В H2 вы можете использовать
SELECT * FROM SYSTEM_RANGE(1, 10);
В PostgreSQL и H2 вы можете использовать специфичные для PosgtreSQL
SELECT * FROM GENERATE_SERIES(1, 10);
Если вам нужно изменить имя столбца на N
, добавьте производноесписок столбцов T(N)
после функции.
SELECT * FROM GENERATE_SERIES(1, 10) T(N);
Но если вы все еще хотите использовать CTE, добавьте имена столбцов в предложение WITH
и при необходимости удалите псевдоним из константы, еслив этом случае не потребуется:
WITH RECURSIVE counter(n) AS (
SELECT 1
UNION ALL
SELECT n + 1 FROM counter WHERE n < 10
)
SELECT * from counter;