У меня есть следующий фрагмент кода из хранимой процедуры SQL Server.
DECLARE @sql nvarchar(Max)
SET @sql = N'
WITH CTE AS
(
SELECT * FROM #TEMP WHERE ...
),
Track AS
(
SELECT *,
CASE WHEN 1B1 = "Track" AND (QTRK_1B1 = "2D QT" OR QTRK_1B1 = "3D QT") THEN "Yes" ELSE "No" END AS Tracking
FROM CTE
),
... '
Exec sp_executesql @sql, N'@AirTarget nvarchar(25), @GroundTracker nvarchar(25)', @AirTarget, @GroundTracker
Я не уверен, что я здесь делаю не так. Когда я выполняю хранимую процедуру, я получаю такие ошибки, как:
Invalid Column Name 'Track'
Invalid Column Name '2D QT'
Invalid Column Name '3D QT'
Invalid Column Name 'Yes'
Invalid Column Name 'No'
Но это не названия столбцов из таблицы. Я погуглил и не могу понять, что делаю не так.
Я попытался заключить эти значения в одинарные кавычки, и я попытался удалить кавычки вокруг этих значений, но ничего не работает. Любая помощь будет оценена


Все они обязательно должны быть одинарными кавычками - все места, где у вас есть двойные кавычки. Если вы делаете это, по крайней мере, это должно дать вам другое сообщение.
Вам также необходимо заключить 1B1 в квадратные скобки, например [1B1], поскольку ему не понравится имя столбца, начинающееся с числа в операторе CASE.
SQL использовать одинарную кавычку ' для строки
CASE
WHEN 1B1 = ''Track'' AND (QTRK_1B1 = ''2D QT'' OR QTRK_1B1 = ''3D QT'') THEN ''Yes''
ELSE ''No''
END AS Tracking
Спасибо за вашу помощь.