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

cara memiliki loop while ganda di sql server 2008

OK, ini akan memberi Anda hasil yang diinginkan, tetapi itu dipertanyakan. Saya akan mencoba dan memperbaikinya sedikit setelah itu.

DECLARE @tblCalendar TABLE(
        CalendarEntryID INT,
        Slot INT
)

DECLARE
@x int, @y int

SET @X = 1 SET @y = 1

WHILE @X <= 100
BEGIN 

    WHILE @Y <=8 AND @X <= 100--LOOP FOR SLOT COLUMN
            BEGIN
            INSERT INTO @tblCalendar (CalendarEntryID,Slot)
            Values (@x, @y)

                SET @y = @y + 1
                SET @x = @x + 1
            end

    SET @y = 1
END


SELECT  *
FROM    @tblCalendar

Pendekatan lain adalah dengan menggunakan KOLOM IDENTITAS

Sesuatu seperti

DECLARE @tblCalendar TABLE(
        CalendarEntryID INT IDENTITY(1,1),
        Slot INT
)

DECLARE
@x int, @y int

SET @X = 1 SET @y = 1

WHILE @X <= 100
BEGIN 

    WHILE @Y <=8 AND @X <= 100--LOOP FOR SLOT COLUMN
            BEGIN
            INSERT INTO @tblCalendar (Slot)
            Values (@y)

                SET @y = @y + 1
                SET @x = @x + 1
            end

    SET @y = 1
END


SELECT  *
FROM    @tblCalendar

Tapi secara pribadi saya akan memilih

DECLARE @Max INT = 100,
        @MaxGroup INT = 8

    ;WITH Val AS (
            SELECT  1 CalendarEntryID
            UNION ALL
            SELECT  CalendarEntryID + 1
            FROM    Val
            WHERE   CalendarEntryID + 1 <= @Max
    )
    SELECT  CalendarEntryID,
            ((CalendarEntryID - 1) % @MaxGroup) + 1 Slot
    FROM    Val
    OPTION (MAXRECURSION 0)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tidak dapat terhubung ke SQL Azure menggunakan SQL Server Management Studio

  2. Konversi Xml ke Tabel SQL Server

  3. Kapan saya harus menggunakan CROSS APPLY daripada INNER JOIN?

  4. SQL Server:cara memilih kontak tingkat Pertama, Kedua dan Ketiga

  5. Datatable yang berisi SqlGeometry menyebabkan eksekusi prosedur tersimpan gagal... Mengapa?