gpt4 book ai didi

sql - 如何在 sql server 2008 中进行双循环

转载 作者:行者123 更新时间:2023-12-04 19:08:37 25 4
gpt4 key购买 nike

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

我需要这方面的帮助。

我需要在列(`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 @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

另一种方法是使用 IDENTITY COLUMN

就像是
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

但就我个人而言,我会去
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)

关于sql - 如何在 sql server 2008 中进行双循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18266336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com