小编典典

如何在SQL Server 2008中进行两次while循环

sql

我正在开发约会日历应用程序。这里还是新手。

我在这方面需要帮助。

我需要在各列(“ calendarID,Slot,AppointmentDate”)中进行两次循环。


slot”列的值将重复1、2、3、4、5、6、7、8重复,最高可达28,而calendarID将不断循环到868值。约会日期的值是从2013年8月1日到2013年8月31日(实际上我打算整整一年)

预期结果

calendarID | Slot       |  AppointmentDate      
----------------------------------------------  
    1          | 1         | 1 Aug 2013  
    2          | 2         | 1 Aug 2013    
    3          | 3         | 1 Aug 2013   
    4          | 4         | 1 Aug 2013   
    5          | 5         | 1 Aug 2013   
    6          | 6         | 1 Aug 2013    
    7          | 7         | 1 Aug 2013   
    8          |..until 28 | 1 Aug 2013 
    9          | 1         | 2 Aug 2013    
    10         | 2         | 2 Aug 2013
    11         | 3         | 2 Aug 2013  
    ...until   
    868        | n         | n Month 2013

这是我尝试的代码,似乎与期望的输出距离很远。我编辑了Astrand提供的代码

DECLARE @tblCalendar TABLE(CalendarEntryID INT,
    Slot INT,  ADate Varchar(50))

DECLARE @x int, @y int , @d INT

SET @X = 1 SET @y = 1 SET @d = 1

WHILE @X <= 868
BEGIN

    WHILE  @Y <=28 AND @d <=31 AND @X <= 868 --LOOP FOR SLOT COLUMN
        BEGIN

        INSERT INTO @tblCalendar (CalendarEntryID,Slot, ADate)
        Values (@x, @y,@d +'/Aug/2013')
                SET @y = @y + 1
                SET @x = @x + 1
        SET @d = @d + 1 
           END
    SET @y = 1  
END

SELECT  *
FROM    @tblCalendar

很抱歉麻烦您询问和编辑我的原始帖子。


阅读 210

收藏
2021-05-23

共1个答案

小编典典

这是我的帖子的答案,以防万一将来像我这样的人会有同样的问题。

DECLARE
@x int, @y int, @d date, @i date, @status Nvarchar(50)
SET @X = 1 
SET @y = 1
SET @d = DATEADD (dd, 1 , '31/Jul/2013') -- '2013/07/01' --default date to August
SET @status = 'Available'

WHILE @X <= 868

BEGIN

WHILE @Y <=28 AND @X <= 868--LOOP FOR SLOT COLUMN
        BEGIN
            INSERT INTO  tblCalendar (CalendarEntryID,Slot,Date,Status)
            Values (@x, @y,@d,@status)
            SET @x = @x + 1
            SET @y = @y + 1
            SET @i = @d
        END
SET @d = DATEADD (dd, 1 , @i) -- THIS WILL INCREMENT THE DATE ACCORDING TO SLOT
SET @y = 1  
END
SELECT  *
FROM    tblCalendar
2021-05-23