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

Mengembalikan beberapa baris dari satu baris

coba ini:

create table #smalltable (id int, [begin] int, [end] int)
insert into #smalltable values (123,1,4)
insert into #smalltable values (124,1,12)
insert into #smalltable values (125,1,7)

;WITH digits (d) AS (
    SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION
    SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION
    SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION
    SELECT 0)
SELECT
    s.id, s.[begin], n.Number AS [End]
    FROM (SELECT i.d + ii.d * 10 + iii.d * 100 + iv.d * 1000 +
              v.d * 10000 + vi.d * 100000 AS Number
              FROM digits            i
                  CROSS JOIN digits  ii
                  CROSS JOIN digits  iii
                  CROSS JOIN digits  iv
                  CROSS JOIN digits  v
                  CROSS JOIN digits  vi
         ) AS N
        INNER JOIN #smalltable                                    s  ON 1=1
        INNER JOIN (SELECT MAX([end]) AS MaxEnd FROM #smalltable) dt ON 1=1
   WHERE n.Number > 0 AND n.Number<=dt.MaxEnd
    AND n.Number<=s.[end]
   ORDER BY s.id,n.Number

komentar

  • jangan beri nama kolom Anda dengan kata-kata khusus:"mulai" dan "akhir", Anda akan berterima kasih kepada saya suatu hari nanti.
  • jika Anda berencana menjalankan ini dalam produksi berkali-kali, buat tabel Angka
    dan gunakan kueri ini sebagai gantinya:

harus memiliki Nomor tabel sebelum ini berfungsi (lihat tautan di atas)

SELECT
    s.id,s.[begin],n.Number AS [End]
    FROM Numbers                n
        INNER JOIN #smalltable  s ON 1=1
   WHERE  n.Number > 0 AND n.Number<=s.[end]
   ORDER BY s.id,number

itu akan berjalan lebih baik.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Adakah cara untuk menyisipkan atau memperbarui SQLBulkCopy jika ada?

  2. SQL Server 2012:jumlah pesanan dengan memberikan kesalahan Sintaks salah di dekat 'pesanan'

  3. Apakah ada cara untuk menentukan beberapa Skema SQL Server 2008 untuk perintah 'generateChangeLog' Liquibase?

  4. Transactionscope melempar pengecualian platform ini tidak mendukung transaksi terdistribusi saat membuka objek koneksi

  5. Parsing Variabel MS SQL Dinamis salah