Bagikan melalui


GENERATE_SERIES (T-SQL)

Berlaku untuk: Titik akhir analitik SQL Server 2022 (16.x) Azure SQL Database Azure SQL Managed Instance SQL di Microsoft Fabric Warehouse di Microsoft Fabric

Menghasilkan serangkaian angka dalam interval tertentu. Interval dan langkah antara nilai seri ditentukan oleh pengguna.

Tingkat kompatibilitas 160

GENERATE_SERIES memerlukan tingkat kompatibilitas setidaknya 160. Ketika tingkat kompatibilitas kurang dari 160, Mesin Database tidak dapat menemukan GENERATE_SERIES fungsi.

Untuk mengubah tingkat kompatibilitas database, lihat Menampilkan atau mengubah tingkat kompatibilitas database.

Konvensi sintaks transact-SQL

Sintaks

GENERATE_SERIES ( start , stop [ , step ] )

Argumen

mulai

Nilai pertama dalam interval. start ditentukan sebagai variabel, literal, atau ekspresi skalar jenis tinyint, smallint, int, bigint, desimal, atau numerik.

stop

Nilai terakhir dalam interval. stop ditentukan sebagai variabel, harfiah, atau ekspresi skalar jenis tinyint, smallint, int, bigint, desimal, atau numerik. Seri berhenti setelah nilai langkah terakhir yang dihasilkan melebihi nilai berhenti.

Jenis data untuk berhenti harus cocok dengan jenis data untuk memulai.

[ langkah ]

Menunjukkan jumlah nilai untuk kenaikan atau penurunan di antara langkah-langkah dalam seri. langkah adalah ekspresi jenis tinyint, smallint, int, bigint, desimal, atau numerik. bisa negatif atau positif, tetapi tidak boleh nol (0).

Argumen ini bersifat opsional. Nilai default untuk langkah adalah 1 jika mulai kurang dari berhenti, jika tidak, nilai defaultnya adalah -1 jika mulai lebih besar dari berhenti.

Jika mulai kurang dari berhenti dan nilai negatif ditentukan untuk langkah, atau jika mulai lebih besar dari berhenti dan nilai positif ditentukan untuk langkah, kumpulan hasil kosong dikembalikan.

Jenis yang dikembalikan

Mengembalikan tabel kolom tunggal yang berisi urutan nilai di mana masing-masing berbeda dari yang sebelumnya berdasarkan langkah. Nama kolom adalah value. Outputnya adalah jenis yang sama dengan mulai dan hentikan.

Izin

Tidak ada izin yang diperlukan untuk GENERATE_SERIES. Namun, pengguna memerlukan izin EXECUTE pada database, dan izin untuk mengkueri data apa pun yang digunakan sebagai input.

Contoh

Contoh berikut menunjukkan sintaks untuk memanggil GENERATE_SERIES.

J. Hasilkan serangkaian nilai bilangan bulat antara 1 dan 10 dalam kenaikan 1 (default)

SELECT value
FROM GENERATE_SERIES(1, 10);

Berikut set hasilnya.

value
-----------
1
2
3
4
5
6
7
8
9
10

B. Hasilkan serangkaian nilai bilangan bulat antara 1 dan 50 dalam kenaikan 5

SELECT value
FROM GENERATE_SERIES(1, 50, 5);

Berikut set hasilnya.

value
-----------
1
6
11
16
21
26
31
36
41
46

C. Hasilkan serangkaian nilai desimal antara 0,0 dan 1,0 dalam kenaikan 0,1

DECLARE @start decimal(2, 1) = 0.0;
DECLARE @stop decimal(2, 1) = 1.0;
DECLARE @step decimal(2, 1) = 0.1;

SELECT value
FROM GENERATE_SERIES(@start, @stop, @step);

Berikut set hasilnya.

value
---------------------------------------
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0