Вы можете сделать это несколькими способами.
Во-первых, нужно создать запрос самостоятельно и выполнить его.
SET @sql = 'SELECT ' + @columnName + ' FROM yourTable'
sp_executesql @sql
Если вы выберете этот метод, будьте очень уверены в том, чтобы поместить ваш вход. Даже если вы знаете, что ваше приложение будет давать только «настоящие» имена столбцов, что, если кто-то обнаружит ошибку в вашей безопасности и сможет выполнить SP напрямую? Тогда они могут выполнить практически все, что им нравится. С динамическим SQL всегда, всегда, проверьте параметры.
В качестве альтернативы, вы можете написать сазе ...
SELECT
CASE @columnName
WHEN 'Col1' THEN Col1
WHEN 'Col2' THEN Col2
ELSE NULL
END as selectedColumn
FROM
yourTable
Это немного более долго наматывается, но в целом гораздо более безопасным.
Вы можете выбрать лучший ответ на этот вопрос, текущий первый ответ вводит в заблуждение. – ctbrown