2016-12-03 9 views
0

whileループを実行しようとしていますが、構文がありません。 私は1871年から2010年までの年の列を持っています。これらの年を範囲の値に割り当てようとしています。1871年から18765年までのすべての年と同様に '1'、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

私は答えを得た。私はちょうど論理的な誤りをした。私は$ yearstartのインクリメントをしながら 'start'を追加するのを忘れていました(私の記事を参照)。 –

関連する問題