Необходимо заменить название имени столбца на значение из переменной. То есть брать название столбца из переменной. В Ms SQL это можно сделать достаточно просто через exec().
Итак стандартный запрос
SELECT '001' AS [CODLIS] , DATAVAL , stuff(tbl.COD, 10, 2, 'DL') AS CODART , tbl.DL AS PR FROM tbl WHERE tbl.DL > 0
Как видно текст DL встречается аж в 3 местах. Вот его нам надо заменить на свою переменную, чтобы меняя только значение переменной менять и имя колонки и текст в функции stuff.
Делается это так.
Создаём 2 переменные. В одной будет имя колонки, в другой сам запрос.
DECLARE @str varchar(3000),@nameCol varchar(2);
Устанавливаем значения. Не забываем про двойной апостроф
Set @nameCol = 'DL' Set @str = 'SELECT ''001'' AS [CODLIS] , ''03.28.2015 0:00:00'' AS DATAVAL , stuff(tbl.COD, 10, 2, '''+@nameCol+''') AS CODART , '+@nameCol+' AS PR FROM tbl WHERE '+@nameCol+' > 0'
Теперь запускаем наш запрос используя exec()
exec(@str)
Вот собственно и все, меняя значение переменной @nameCol меняем и сам запрос и имена столбцов.