create while loop with cte

后端 未结 2 713
我在风中等你
我在风中等你 2021-02-04 16:40

how to create sql server cte from a while loop
my loop like this

  declare @ind as int
  declare @code as nvarchar
  set @ind  = 0
   while @ind < 884
           


        
相关标签:
2条回答
  • 2021-02-04 17:14

    Below query selects values from 0 to 884:

    ;WITH T(Num)AS
    (
        SELECT 0 
        UNION ALL
        SELECT Num+1 FROM T WHERE T.Num < 884
    )SELECT Num FROM T 
    OPTION (MAXRECURSION 0);
    
    0 讨论(0)
  • 2021-02-04 17:37

    If you need table:

    ;WITH Sec(Number) AS 
    (
        SELECT 0 AS Number
        UNION ALL
        SELECT Number + 1
        FROM Sec
        WHERE Number < 884
    ) 
    
    SELECT * FROM Sec
    OPTION(MAXRECURSION 0)
    

    If you need one string:

    ;WITH Sec(Number) AS 
    (
        SELECT 0 AS Number
        UNION ALL
        SELECT Number + 1
        FROM Sec
        WHERE Number < 884
    ) 
    
    SELECT STUFF(a.[Str], 1, 1, '')
    FROM
    (
        SELECT (SELECT ',' + CAST(Number AS NVARCHAR(3)) 
        FROM Sec
        FOR XML PATH(''), TYPE
        ).value('.','varchar(max)') AS [Str] 
    ) AS a
    OPTION(MAXRECURSION 0)
    
    0 讨论(0)
提交回复
热议问题