我正在开发约会日历应用程序。这里还是新手。
我在这方面需要帮助。
我需要在各列(“ 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
很抱歉麻烦您询问和编辑我的原始帖子。
这是我的帖子的答案,以防万一将来像我这样的人会有同样的问题。
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