- Categories:
SEQ1 / SEQ2 / SEQ4 / SEQ8¶
Returns a sequence of monotonically increasing integers, with wrap-around. Wrap-around occurs after the largest representable integer of the integer width (1, 2, 4, or 8 byte).
Important
This function uses sequences to produce a unique set of increasing integers, but does not necessarily produce a gap-free sequence. When operating on a large quantity of data, gaps can appear in a sequence. If a fully ordered, gap-free sequence is required, consider using the ROW_NUMBER window function.
For more details about sequences in Snowflake, see Using Sequences.
Syntax¶
SEQ1( [0|1] )
SEQ2( [0|1] )
SEQ4( [0|1] )
SEQ8( [0|1] )
Usage notes¶
- If the optional sign argument is 0, the sequence continues at 0 after wrap-around. If the optional sign argument is 1, the sequence continues at the smallest representable number based on the given integer width. 
- The default sign argument is 0. 
Examples¶
These are basic examples of using sequences:
SELECT seq8() FROM table(generator(rowCount => 5)); +--------+ | SEQ8() | |--------| | 0 | | 1 | | 2 | | 3 | | 4 | +--------+SELECT * FROM (SELECT seq2(0), seq1(1) FROM table(generator(rowCount => 132))) ORDER BY seq2(0) LIMIT 7 OFFSET 125; +---------+---------+ | SEQ2(0) | SEQ1(1) | |---------+---------| | 125 | 125 | | 126 | 126 | | 127 | 127 | | 128 | -128 | | 129 | -127 | | 130 | -126 | | 131 | -125 | +---------+---------+
This example shows how to use ROW_NUMBER to generate a sequence without gaps:
SELECT ROW_NUMBER() OVER (ORDER BY seq4()) FROM TABLE(generator(rowcount => 10)); +-------------------------------------+ | ROW_NUMBER() OVER (ORDER BY SEQ4()) | |-------------------------------------| | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | | 9 | | 10 | +-------------------------------------+