2016-12-03 109 views
0

我想执行一个while循环,但缺少一些我猜的语法。 我有一个专栏,年份从1871年到2010年不等。我试图将这些年份分配到一个范围内的值。与1871年到18765年之间的所有年份一样,'18'年,1876年至1880年为'2'年。 我无法正确执行循环。请说明一下。如何增加一个循环中的多个变量?

SQL Server代码:(当试图增加@我,@今年猜测什么是错的..)

DECLARE @i int = 0, 
@year int = 1875, 
@yearstart int = 1870 

WHILE (@i < 30) 
BEGIN 
    UPDATE [train] 
    SET [YearBuilt] = @i 
    WHERE [YearBuilt] between @yearstart and @year 

    SET @i = @i + 1 
    SET @year = @year + 5 
    SET @yearstart = @year + 6 
END 
+0

你有什么错误? –

回答

2

添加的;为什么@year + 6代替+ 5

DECLARE 

@i int = 0, 
@year int = 1875, 
@yearstart int = 1870 

WHILE (@i < 30) 
BEGIN 
    update train 
    set YearBuilt [email protected] 
    where YearBuilt between @yearstart and @year; 
    SET @i = @i + 1; 
    SET @year = @year + 5; 
    SET @yearstart = @year + 5; 
END 
+0

嗨!胡安。您的建议编辑无法解决我的问题。我仍然无法使我所有年份的内容在正常情况下保持正常。这是为什么?循环执行不好吗? –

+0

更具体一些,问题是什么? –

+0

我得到了答案。我只是做了一个逻辑错误。我忘了添加'开始',同时在$ yeartart中增加(请参阅我的文章),非常感谢正确的我的语法SET属性@juan –