Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana cara menghasilkan rentang angka antara dua angka?

Pilih nilai yang tidak bertahan dengan VALUES kata kunci. Kemudian gunakan JOIN s untuk menghasilkan banyak dan banyak kombinasi (dapat diperluas untuk membuat ratusan ribu baris dan seterusnya).

Versi pendek dan cepat (tidak mudah dibaca):

WITH x AS (SELECT n FROM (VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) v(n))
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL))
FROM x ones, x tens, x hundreds, x thousands
ORDER BY 1

Demo

Versi lebih verbose:

SELECT ones.n + 10*tens.n + 100*hundreds.n + 1000*thousands.n
FROM (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) ones(n),
     (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) tens(n),
     (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) hundreds(n),
     (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) thousands(n)
ORDER BY 1

Demo

Kedua versi dapat dengan mudah diperpanjang dengan WHERE klausa, membatasi output angka ke rentang yang ditentukan pengguna. Jika Anda ingin menggunakannya kembali, Anda dapat menentukan fungsi bernilai tabel untuknya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memanggil prosedur tersimpan menggunakan VBA

  2. bergabung dengan kolom data yang dibatasi koma

  3. Mendaftar SQL Server dalam Transaksi XA Terdistribusi

  4. Cara Mengimpor Database SQL Server ke Access 2016

  5. Perubahan Kolom Metadata Saja Baru di SQL Server 2016