Если вы пытаетесь задать имя столбца динамически, вы можете взглянуть на выполнение динамического sql. Тем не менее, вы должны сначала прочитать об опасностях этого подхода:
http://www.sommarskog.se/dynamic_sql.html
На этой странице приведен пример, в котором динамически указывается имя таблицы - вы можете изменить его, чтобы вместо него динамически указывалось имя столбца:
CREATE PROCEDURE general_select @tblname nvarchar(128),
@key varchar(10),
@debug bit = 0 AS
DECLARE @sql nvarchar(4000)
SET @sql = 'SELECT col1, col2, col3
FROM dbo.' + quotename(@tblname) + '
WHERE keycol = @key'
IF @debug = 1 PRINT @sql
EXEC sp_executesql @sql, N'@key varchar(10)', @key = @key
Например, если у вас есть таблица «MyTable» со столбцами «x», «y» и «z», она может выглядеть следующим образом:
DECLARE @columnName nvarchar(128)
DECLARE @sql nvarchar(4000)
set @columnName = 'z'
SET @sql = 'SELECT x, y, ' + @columnName + ' from MyTable'
EXEC sp_executesql @sql, N'@columnName varchar(128)', @columnName = @columnName