鉴于以下内容:
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 的组合是什么?
答案 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;