Cambiar el nombre de Alias ​​dinámicamente

Mientras estaba trabajando en una pequeña tarea, encontré una situación

DECLARE @i INT , @l INT , @desc CHAR(50) SET @l = 1 SET @i = 20 WHILE ( @l <= @i ) BEGIN SELECT 'Test' AS 'Test'+@l SET @l = @l + 1 END 

En este código, quiero que cuando un bucle se ejecute, todo el nombre de la columna cambie con el valor de @l.

Necesita build el enunciado dinámicamente y usar EXECUTE o sp_executesql para ejecutar el enunciado.

 DECLARE @i INT , @l INT , @desc CHAR(50) SET @l = 1 SET @i = 20 WHILE ( @l <= @i ) BEGIN EXEC ('SELECT ''Test'' AS Test'+@l) SET @l = @l + 1 END 

Lectura recomendada al ingresar al mundo del SQL dynamic: la maldición y las bendiciones del SQL dynamic

Usando sp_executesql en su lugar:

 DECLARE @i INT , @l INT , @desc CHAR(50), @SQL NVARCHAR(100) SET @l = 1 SET @i = 20 WHILE ( @l <= @i ) BEGIN SET @SQL = N'SELECT ''Test'' AS Test'+CAST(@l AS NVARCHAR(10)) EXEC sp_executesql @SQL SET @l = @l + 1 END