如何根据 Snowflake (SQL) 中最小值和最大值之间的所有值的范围创建行?

How to create rows based on the range of all values between min and max in Snowflake (SQL)?

假设我有以下数据:

ID T_Min T_Max
1 3 5
2 1 4

我想使用 SQL(雪花)创建以下 table:

ID T
1 3
1 4
1 5
2 1
2 2
2 3
2 4

有人知道怎么做吗?非常感谢您!

示例数据:

CREATE OR REPLACE TABLE T1 (
    ID INT,
    T_Min INT,
    T_Max INT);

INSERT INTO T1(ID, T_Min, T_Max)
SELECT * FROM VALUES (1, 3, 5), (2, 1, 4) t(ID, T_Min, T_Max);

解决方案:

WITH N AS (
  SELECT ROW_NUMBER() OVER(ORDER BY SEQ4()) AS T FROM TABLE(GENERATOR(ROWCOUNT => 1000)) -- Set to the maximum value of the difference between T_Max and T_Min
)
SELECT T1.ID, N.T
  FROM T1
  JOIN N ON N.T BETWEEN T1.T_Min AND T1.T_Max
 ORDER BY T1.ID, N.T;