当我在 snowflake 中编写下面的代码时,出现了错误。
set start_date = '2020-08-01'::TIMESTAMP_NTZ(9);
set end_date = '2020-11-30'::TIMESTAMP_NTZ(9);
WITH DateTable AS (
SELECT $start_date AS MyDate
UNION ALL
SELECT DATEADD(DAY, 1, MyDate) FROM DateTable WHERE MyDate < $end_date
)
SELECT * FROM DateTable;
错误信息如下...
Recursion exceeded max iteration count (100)
我似乎没有办法自己增加最大迭代次数。
如何增加交互次数的限制?
最佳答案
使用 generator 的非递归版本:
SET (start_date,end_date)=('2020-08-01'::TIMESTAMP_NTZ(9),'2020-11-30'::TIMESTAMP_NTZ(9));
SET c = (SELECT DATEDIFF(DAY, $start_date, $end_date));
SELECT DATEADD(DAY, c.n, $start_date) AS calc_date
FROM(SELECT ROW_NUMBER() OVER (ORDER BY 1) - 1 FROM TABLE(generator(rowcount=>$c))) c(n);
解释:
变量 c
保存开始/结束日期之间的天数,并且是生成器的输入。生成器返回指定的行数。 ROW_NUMBER() OVER() - 1
窗口函数返回从 0 开始的连续数字,这些数字被添加到 start_date。
关于sql - 如何增加雪花中的最大迭代次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64845646/