#sql-server #tsql #rename
#sql-server #tsql #переименовать
Вопрос:
Я хочу переименовать столбец в конце серии запросов на основе переменной. Он будет выполнять что-то вроде этого:
DECLARE @formTable TABLE (FormID varchar(max))
INSERT @formTable SELECT 'Form1'AS FormID;
INSERT @formTable SELECT 'Form2'AS FormID;
INSERT @formTable SELECT 'Form3' AS FormID;
INSERT @formTable SELECT 'Form5' AS FormID;
DECLARE @CCount TABLE (FormID varchar(max), Present varchar(max))
INSERT @CCount SELECT 'Form1' AS FormID, 'Yes' AS Present;
INSERT @CCount SELECT 'Form2' AS FormID, 'Yes' AS Present;
DECLARE @subject varchar(12);
SET @subject = 'Subject 22'
SELECT t.FormID AS Form, Present
FROM @formTable t LEFT JOIN @CCount c ON t.FormID = c.FormID
который создает таблицу, которая выглядит следующим образом:
Form Present
Form1 Yes
Form2 Yes
Form3 NULL
Form5 NULL
Я хочу, чтобы это выглядело так :
Form Subject 22
Form1 Yes
Form2 Yes
Form3 NULL
Form5 NULL
Как я могу это сделать?
Спасибо!
Ответ №1:
Вы не можете использовать переменные для имен столбцов — вы можете сделать это с помощью динамического SQL, хотя вам нужно быть очень осторожным с динамическим SQL и не вводить уязвимость SQL-инъекции.
Комментарии:
1. Если я помещу переменную в таблицу, это поможет?
2. @user918967 — Нет. Необходимо указать псевдоним столбца, если не используется динамический SQL.
Ответ №2:
Одним из способов может быть динамический SQL:
declare @sql nvarchar(max)
set @sql = 'SELECT t.FormID AS Form, Present as [' @subject
'] FROM @formTable t LEFT JOIN @CCount c ON t.FormID = c.FormID'
exec @sql