---
schema_version: "1"
id: 8a64130d3d3053f820e40ae62486578e42fe282fd36db90f49e99dddfb1efec2
title: generate_series (Numerical)
collection: developer
version: current
locale: en-us
portal_url: https://docs.salesforce.com/developer/current/en-us/data-cloud/data-cloud-query-guide/references/data-cloud-sql-reference/set-returning-func/generate-series.md
canonical_url: https://developer.salesforce.com/docs/data/data-cloud-query-guide/references/dc-sql-reference/generate-series.html
source_site: developer.salesforce.com
content_type: documentation
content_hash: 15a275b2778d3ee079805838acd90e9ba2c2683a39b48523ad740d95c1960a72
products:
  - Data 360 Query Guide
  - Data 360 Developer Documentation
---
# `generate_series` (Numerical)

**Applies to:** ✅ Data 360 SQL ✅ Tableau Hyper API

Generate a series of values, from `start` to `stop` with a given `step` size.

## Syntax

```sql
generate_series(<start>, <stop> [, <step>])
```

## Arguments

### Required

- `<start>`: The start value of the series.
- `<stop>`: The end value of the series.

### Optional

- `<step>`: The step size. The default step size is `1`.

## Returns

Returns a set of rows, where each row has a single column, containing the generated series of values.

## Considerations

There are two versions of `generate_series`:
- The numerical version
- The time-based version

This page describes the numerical version.
The time-based version is described in the [generate_series (Time-based)](https://developer.salesforce.com/docs/data/data-cloud-query-guide/references/dc-sql-reference/generate-series-time.md) section.

The following considerations apply to both versions of `generate_series`:

- Both the `start` and `stop` values are included in the generated series. I.e., both boundaries are inclusive.
- The step size must be non-zero.
- The step size can also be negative. For negative step sizes, `start` must be greater than `stop`.
- For positive step sizes, if `start` is greater than `stop`, the function returns no rows.
- For negative step sizes, if `start` is less than `stop`, the function returns no rows.
- If any input is `null`, the function returns no rows.

See the [generate_series (Time-based)](https://developer.salesforce.com/docs/data/data-cloud-query-guide/references/dc-sql-reference/generate-series-time.md) page for additional considerations for the time-based version.

## Examples

### Basic Usage

Without a step size, `generate_series` generates all values between `start` and `stop`, with a step size of `1`.
Note how the result set contains both `2` and `4`, i.e. the `start` and `end` boundaries are inclusive.

```sql
SELECT * FROM generate_series(2,4);
```

Results:

| generate_series |
| :--- |
| 2 |
| 3 |
| 4 |

### Explicit step sizes

If an explicit step size is provided, `generate_series` generates all values between `start` and `stop`, with the given step size.

```sql
SELECT * FROM generate_series(1,5,2);
```

Results:

| generate_series |
| :--- |
| 1 |
| 3 |
| 5 |


### Negative step sizes

For negative step sizes, the function returns the series in reverse order.
`start` must be greater than `stop` in this case.

Note that in SQL, rows within a row set are usually unordered.
Hence, the following query uses `WITH ORDINALITY` to instruct `generate_series` to also number the generated rows.
The `ORDER BY` clause then ensures that the query indeed returns values in this specific order.


```sql
SELECT *
FROM generate_series(5,1,-2) WITH ORDINALITY
ORDER BY ordinality ASC
```

Results:

| generate_series | ordinality |
| :--- | :--- |
| 5 | 1 |
| 3 | 2 |
| 1 | 3 |

### Empty Series

For the following query, `start` is greater than `stop`, so the function returns an empty row set.

```sql
SELECT * FROM generate_series(4,3);
```

### Decimal Series

You can also use fractional numbers as `start`, `stop` and even `step` values.


```sql
SELECT generate_series(1.1, 4.1, 1.3);
```

Results:

| generate_series |
| :--- |
| 1.1 |
| 2.4 |
| 3.7 |

## Related Documentation

- [Set Returning Functions](https://developer.salesforce.com/docs/data/data-cloud-query-guide/references/dc-sql-reference/set-returning-functions.md)
- [`generate_series` (Time-based)](https://developer.salesforce.com/docs/data/data-cloud-query-guide/references/dc-sql-reference/generate-series-time.md) - the time-based version of this function
- [`ARRAY_GENERATE_SERIES` (Numerical)](https://developer.salesforce.com/docs/data/data-cloud-query-guide/references/scalar-func/array-func/array-generate-series.md) - the array-returning version of this function
