雪花创建日期列表 [英] Snowflake Creating a List of Dates

查看:8
本文介绍了雪花创建日期列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

此代码在SSMS中可以很好地工作,但在Snowflake中就不那么好用了。对如何修复它有什么建议吗?

 set (start_date) = ('2017-07-01');
 set (end_date) = ('2022-06-30');

  with get_all_dates as (




      select 
        $start_date as DateValue
        , 1 as level
      union all
      select    
        DATEADD(DAY,1,DateValue)
        , level + 1
      from 
        get_all_dates
      where 
        Datevalue < $end_date
  
  )
  
  select * from get_all_dates;

这会产生以下错误消息:

SQL编译错误:锚术语和递归术语类型不匹配 递归CTE‘GET_ALL_DATES’中的列‘DATEVALUE’

预期输出:

2017-07-01
2017-07-02
...
2022-06-29
2022-06-30

seq4()

推荐答案的答案很有用,但请注意--seq4()不能保证生成序列号。这意味着您可能会得到一系列不同的日期,而不是所需的结果。

您可以改为执行此操作:

select '2020-01-01'::date+x 
from (
  select row_number() over(order by 0) x 
  from table(generator(rowcount => 1824))
)

简写版本:

select '2020-01-01'::date + row_number() over(order by 0) x 
from table(generator(rowcount => 1824))

具有任意start_date和end_date:

select -1 + row_number() over(order by 0) i, start_date + i generated_date 
from (select '2020-01-01'::date start_date, '2020-01-15'::date end_date)
join table(generator(rowcount => 10000 )) x
qualify i < 1 + end_date - start_date

这篇关于雪花创建日期列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆