获取雪花中 2 个值之间的所有整数/日期

时间:2021-04-15 13:26:14

标签: sql snowflake-cloud-data-platform

鉴于以下内容:

col val1 val2
A   2    7
B   43   46
C   1    3

如何将两列“分解”成:

col val
A   2
A   3
A   4
A   5
A   6
A   7
B   43
B   44
B   45
B   46
C   1
C   2
C   3

val1 和 val2 之间的 col 和 val 的组合是什么?

2 个答案:

答案 0 :(得分:2)

您始终可以使用递归 CTE:

with recursive cte as (
      select col1, val1, val2
      from t
      union all
      select col1, val1 + 1, val2
      from cte
      where val1 < val2
     )
select col1, val1
from cte;

答案 1 :(得分:1)

这是可能的,您只需要理货表(此处使用 GENERATOR)和 JOIN BETWEEN:

WITH cte AS (
  -- generating range 1-100
  SELECT ROW_NUMBER() OVER(ORDER BY seq4()) AS val FROM TABLE(GENERATOR(ROWCOUNT => 100))
)
SELECT t.col, c.val
FROM tab t
INNER JOIN cte c ON c.val BETWEEN t.val1 AND t.val2
ORDER BY t.col, c.val;