A função GENERATE_SERIES gera uma sequência de inteiros consecutivos de from a to, com ambos os limites inclusivos.
Sintaxe
GENERATE_SERIES(BIGINT from, BIGINT to)
Parâmetros
|
Parâmetro |
Tipo |
Descrição |
|
|
BIGINT |
Limite inferior inclusivo da série. |
|
|
BIGINT |
Limite superior inclusivo da série. |
Exemplo
Dados de teste
|
s (BIGINT NOT NULL) |
e (BIGINT NOT NULL) |
|
1 |
3 |
|
-2 |
1 |
Código de teste
CREATE TEMPORARY TABLE input_table(
s BIGINT NOT NULL,
e BIGINT NOT NULL
) WITH (
'connector' = 'datagen'
);
CREATE TEMPORARY TABLE output_table(
s BIGINT NOT NULL,
e BIGINT NOT NULL,
v BIGINT NOT NULL
) WITH (
'connector' = 'print'
);
INSERT INTO output_table
SELECT s, e, v FROM input_table, LATERAL TABLE(GENERATE_SERIES(s, e)) AS t(v);
Resultado do teste
|
s (BIGINT) |
e (BIGINT) |
v (BIGINT) |
|
1 |
3 |
1 |
|
1 |
3 |
2 |
|
1 |
3 |
3 |
|
-2 |
1 |
-2 |
|
-2 |
1 |
-1 |
|
-2 |
1 |
0 |
|
-2 |
1 |
1 |
Para a linha de entrada (1, 3), a função retorna 1, 2 e 3. Para a linha (-2, 1), ela retorna -2, -1, 0 e 1.