我如何从下面的逻辑中获得结果,我想将其放入存储过程中,并计算原始行将被分成多少行的循环。因此,给定的行最终可能最终被计算为三个新行......或没有行......或一个。所以我需要一个柜台和一种方法来把它从诱惑中拿出来,放到一张真正的桌子上。我已经尝试更新临时表并在今天工作了几个小时,但没有运气。我已经尝试将我所有的 id 插入到临时表中。我只是不熟悉如何做到这一点,今天已经研究了很多。帮助表示赞赏:
declare @StartTime time
declare @EndTime time
declare @Temp_StartTime time
declare @temp_StartHour int
declare @temp_EndHour int
declare @temp_StartMinute int
declare @temp_EndMinute int
SET @StartTime='2:30:00'
SET @EndTime='4:01:00'
SET @Temp_StartTime=@StartTime
SET @temp_StartHour=DATEPART(HOUR, @StartTime)
SET @temp_EndHour=DATEPART(HOUR, @EndTime)
SET @temp_StartMinute=DATEPART(MI, @StartTime)
SET @temp_EndMinute=DATEPART(MI, @EndTime)
if(@temp_EndMinute>0)
BEGIN
SET @temp_EndHour=@temp_EndHour+1
END
DECLARE @Temp_Table TABLE
(
StartHour int,
StartMinute int,
EndHour int,
EndMinute int,
StartTime time,
EndTime time
)
WHile((@temp_EndHour-@temp_StartHour>=1))
BEGIN
INSERT INTO @Temp_Table
SELECT (DATEPART(HOUR, @Temp_StartTime)) AS StartHour,(DATEPART(MINUTE, @Temp_StartTime)) AS StartMinute,
@temp_StartHour+1 AS EndHour,
0 AS EndMinute, @StartTime as StartTime, @EndTime as EndTime
SET @temp_StartHour=@temp_StartHour+1
SET @Temp_StartTime=DATEADD(HOUR,1,@Temp_StartTime)
if(DATEPART(MI, @Temp_StartTime)!=0)
BEGIN
SET @Temp_StartTime=DATEADD(MI,-@temp_StartMinute,@Temp_StartTime)
END
END
--here's where it all goes horribly wrong
SELECT * INTO newTable FROM @Temp_Table
更多信息:
答案可以在我之前提出的问题中找到。我开始了这个问题的缩小版,因为我认为我发布了太多信息,以至于有人找不到帮助我的观点。但这并不完全正确,因为我从另一个用户那里得到了很好的回答。