SQL:在 CTE 中构建 table 个数字直到可变输入数字

SQL: Build table of numbers up to a variable input number inside CTE

我正在 Snowflake 中构建一个 CTE,它需要 return table 个值,该值基于从 table 中的最大值导出的变量。是否可以在 CTE 中设置变量?

这是我正在处理的查询:

WITH MAX_VAL_QUERY (
SELECT MAX(COL1) FROM SOURCE_TABLE
),

MAX_VAL_VAR_QUERY AS (
SET MAX_VAL_VAR AS (SELECT MAX_VAL FROM MAX_VAL_QUERY LIMIT 1)
),

NUMS AS (
SELECT 1 AS VAL
UNION ALL
SELECT VAL + 1 AS VAL
FROM NUMS
WHERE NUMS.VAL <= MAX_VAL_VAR
)

SELECT * FROM NUMS;

这是正确的方法吗?

使用GENERATOR:

SELECT ROW_NUMBER() OVER(ORDER BY SEQ4()) AS NUM
FROM TABLE(GENERATOR(ROWCOUNT=>10000)) sub  -- ROWCOUNT is arbitrary here
WHERE NUM <= (SELECT MAX(COL1) FROM SOURCE_TABLE);

Is it possible to set a variable in a CTE?

不是在 CTE 中而是之前:

SET maxval = (SELECT MAX(COL1) FROM SOURCE_TABLE);

WITH RECURSIVE NUMS AS (
  SELECT 1 AS VAL
  UNION ALL
  SELECT VAL + 1 AS VAL
  FROM NUMS
  WHERE NUMS.VAL <= $maxval
)
SELECT * FROM NUMS;