【发布时间】:2015-12-18 19:37:31
【问题描述】:
我需要创建一个基于两个参数填充的临时表:
declare @Start date = '01/01/2015'
declare @End date = '12/31/2015'
临时表应该有一个列,该列将捕获 @Start 和 @End 参数之间的所有年份和月份的 YYYYMM。
这是我目前所拥有的。我想在 201412 停止它,然后在 201501 重新开始。相反,这个循环一直以加 1 递增(我不想看到 201413..等等):
declare @Start date = '01/01/2014'
declare @End date = '12/31/2015'
declare @monthstart as int
declare @monthend as int
declare @increment as int
set @monthstart = (SELECT LEFT(CONVERT(varchar, @Start,112),6))
set @monthend = (SELECT LEFT(CONVERT(varchar, @End,112),6))
create table #datetemp (RelevantYYYYMM int)
insert into #datetemp values (@monthstart)
set @increment = @monthstart
While @increment < @monthend
BEGIN
set @increment = (select Max(RelevantYYYYMM) + 1 from #datetemp)
insert into #datetemp values (@increment)
set @increment = (select Max(RelevantYYYYMM) from #datetemp)
IF (select Max(RelevantYYYYMM) from #datetemp) > @monthend
Break
else
continue
END
select * from #datetemp
【问题讨论】:
标签: sql-server-2008 loops if-statement while-loop