Как вы и написали, тело цикла WHILE
охватывает только следующий оператор.
Вы получаете только один результат, поскольку INSERT
не является частью тела цикла и выполняется толькоодин раз (после увеличения цикла @i
до 60
).
Если вы хотите, чтобы тело было более одного оператора, заключите операторы в блок BEGIN ... END
.
...
WHILE @i < 60
BEGIN
SET @i = @i + 1;
INSERT INTO @Result
SELECT dateadd(day, -@i, getdate());
END;
...