首页 > 解决方案 > 雪花需要根据列值在循环中运行sql插入

问题描述

我有一张如下表

id           date.         no_of Days
12           12-03-1999    30
13           12-03-1999    7
14           12-03-1999    22
15           12-03-1999    12

我需要创建另一个表,其中包含一个额外字段作为 date_increment,它将基于给定日期递增到基于 1 天的 no_of_days。输出将如下所示

id           date.         no_of Days.  date_increment
12           12-03-1999    30           12-03-1999
12           12-03-1999    30           13-03-1999
12           12-03-1999    30           14-03-1999
..           .....         ..           till 30 days
13           12-03-1999    7            12-03-1999
13           12-03-1999    7            13-03-1999
13           12-03-1999    7            14-03-1999
..           ...           ..           till 7 day
14           12-03-1999    22
15           12-03-1999    12

我正在为不支持循环或动态查询的雪花编写此查询。有人可以建议。

即使我使用像 python 这样的另一个 IDE,我也不知道如何解决这个问题。

标签: sqlsnowflake-cloud-data-platformsnowsql

解决方案


一种方法是使用generator()

select t.*, date + (n - 1) * interval '1 day'
from t join
     (select seq4() as n
      from table(generator(rowcount => 100)) g
     ) n
     on n.n <= t.no_of_days;


推荐阅读