[英]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.