Я сохранил значения в таблице Fields
, Name
. Вот список имен, которые должны отображаться как имена столбцов, для него я использую PIVOT
. Мне нужно добавить 1
ко всем выбранным именам.Переименовать все сводные значения в SQL
Это должно быть что-то вроде этого:
До поворота:
Column name: | Name |
| Jeniffer |
| Jason |
| Jack |
После поворота:
Column names: | Jennifer1 | Jason1 | Jack1 |
-- It should go as column names
-- And on each of name add 1
У меня есть код для PIVOT
, Он успешно делать это, только проблема в том, как добавить блок 1
ко всем выбранным значениям?
Это часть моего кода из хранимой процедуры:
SELECT @cols += ([Name]) + ','
FROM ( SELECT Name -- Here selecting names which should be renamed
FROM Fields
WHERE Id Between 50 And 82
) a
SET @cols = LEFT(@cols, LEN(@cols) - 1)
SET @sql = 'SELECT * FROM
(
SELECT FF.Name AS [NamePiv]
FROM ......................
WHERE ......................
) x
PIVOT
(
MIN (Val1)
FOR NamePiv IN (' + @cols + ')
) p'
EXEC Sp_executesql @sql, N'@param1 NVARCHAR(60), @param2 TINYINT, @param3 NVARCHAR(80)', @param1, @param2, @param3
Спасибо за ответ. Действительно ли мне нужно использовать 'SET @sql = 'SELECT' + @selectCols + 'FROM'? Вместо 'SELECT * FROM ...' Теперь ничего не возвращается. Нет ошибок, но ничего не возвращается –
Урезали ли вы запятую запятую @selectCols? – flo
То же самое после того, как я использую этот 'SET @selectCols = LEFT (@selectCols, LEN (@cols) - 1)' ничего не возвращает –