Недопустимое имя столбца и строковое значение SQL Server

У меня есть следующий фрагмент кода из хранимой процедуры 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'

Но это не названия столбцов из таблицы. Я погуглил и не могу понять, что делаю не так.

Я попытался заключить эти значения в одинарные кавычки, и я попытался удалить кавычки вокруг этих значений, но ничего не работает. Любая помощь будет оценена

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
744
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Все они обязательно должны быть одинарными кавычками - все места, где у вас есть двойные кавычки. Если вы делаете это, по крайней мере, это должно дать вам другое сообщение.

Вам также необходимо заключить 1B1 в квадратные скобки, например [1B1], поскольку ему не понравится имя столбца, начинающееся с числа в операторе CASE.

Спасибо за вашу помощь.

David.Warwick 02.11.2018 18:19
Ответ принят как подходящий

SQL использовать одинарную кавычку ' для строки

CASE 
    WHEN 1B1 = ''Track'' AND (QTRK_1B1 = ''2D QT'' OR QTRK_1B1 = ''3D QT'') THEN ''Yes'' 
    ELSE ''No'' 
END AS Tracking

Другие вопросы по теме