如何根据 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;
假设我有以下数据:
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;