繁体   English   中英

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

[英]Get all integers/dates between 2 values in Snowflake

鉴于以下情况:

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 的组合是什么?

您始终可以使用递归 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;

有可能,您只需要计数表(此处使用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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM