sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Server FOR HVER løkke

Her er en mulighed med en tabelvariabel:

DECLARE @MyVar TABLE(Val DATETIME)
DECLARE @I INT, @StartDate DATETIME
SET @I = 1
SET @StartDate = '20100101'

WHILE @I <= 5
BEGIN
    INSERT INTO @MyVar(Val)
    VALUES(@StartDate)

    SET @StartDate = DATEADD(DAY,1,@StartDate)
    SET @I = @I + 1
END
SELECT *
FROM @MyVar

Du kan gøre det samme med en midlertidig tabel:

CREATE TABLE #MyVar(Val DATETIME)
DECLARE @I INT, @StartDate DATETIME
SET @I = 1
SET @StartDate = '20100101'

WHILE @I <= 5
BEGIN
    INSERT INTO #MyVar(Val)
    VALUES(@StartDate)

    SET @StartDate = DATEADD(DAY,1,@StartDate)
    SET @I = @I + 1
END
SELECT *
FROM #MyVar

Du bør fortælle os, hvad der er dit hovedmål, som det blev sagt af @JohnFx, dette kunne sandsynligvis gøres på en anden (mere effektiv) måde.



  1. Find dublerede rækker i SQL Server

  2. Oracle og Left Outer Join

  3. 4 datatyper, der skal udfases i SQL Server

  4. Spring tabeller over i mysqldump baseret på et mønster