¿Intentaste algo como:
DECLARE @FiscalYear INT, @DataSource NVARCHAR(25), @SQL NVARCHAR(250);
SET @DataSource = N'CustomerCosts20120328';
SET @SQL = N'SELECT DISTINCT @FiscalYear = FiscalYear FROM ' + @DataSource;
EXEC sp_executesql @SQL, N'@FiscalYear INT OUTPUT', @FiscalYear OUTPUT;
PRINT @FiscalYear;
Querrá asegurarse de prefijar las cadenas nvarchar con N, p. SELECT @SQL = N'SELECT ...
.
Además, sabe que si la consulta devuelve varias filas, el valor que se asigna a @FiscalYear
es completamente arbitrario, ¿verdad? Si bien puede esperar un solo valor de esa tabla, no está de más usar MAX()
o TOP 1 ... ORDER BY
para garantizar que solo se asigne un único valor predecible.