2016-12-03 2 views
0

Я пытаюсь выполнить цикл while, но, как мне кажется, отсутствует некоторый синтаксис. У меня есть колонка с годами от 1871 до 2010 года. Я пытаюсь присвоить эти годы в диапазоне. Как и все годы между 1871 и 18765 годами как «1», с 1876 по 1880 год, как «2» и с. Я не могу выполнить цикл правильно. прошу пролить немного света.Как увеличить несколько переменных в цикле? `

SQL код сервера: (думаю, что-то неправильно при попытке увеличения @ я, @ год ..)

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

Получил ответ. Я просто сделал логическую ошибку. я забыл добавить «start», делая приращение в $ yearstart (см. мой пост), кроме того, благодаря исправлению моего синтаксиса для атрибута SET @juan –

Смежные вопросы