#sql-server
#sql-сервер
Вопрос:
Я использую SQL server Management studio 2014. И я продолжаю получать эту ошибку при создании общей таблицы:
Сообщение 102, уровень 15, состояние 1, строка 28 Неправильный синтаксис рядом с ‘)’.
Что я пытаюсь сделать, так это выбрать имя и умножить значения атрибутов двух других столбцов, чтобы создать псевдоним из таблицы FIRE_FIGHTER и сделать его общей таблицей для повторного использования позже.
Мне сказали поставить точку с запятой прямо в начале ключевого слова «WITH», но это не помогает. Пожалуйста, я новичок в SQL server. Кто-нибудь может помочь? Пожалуйста. Спасибо в расширенном
;WITH PROMOTION_SCORE (F_Name,Promotion_Score)
AS
(
SELECT
F_Name, (Years_In_Department*Number_Fire_Fought) AS Promotion_Score
FROM FIRE_FIREGHTER
)
Ответ №1:
Ваш общий синтаксис запроса табличного выражения неверен. Вам не хватает инструкции select . Попробуйте следующее
;WITH PROMOTION_SCORE (F_Name,Promotion_Score)
AS
(
SELECT
F_Name, (Years_In_Department*Number_Fire_Fought) AS Promotion_Score
FROM FIRE_FIREGHTER
)
Select * from PROMOTION_SCORE;
Комментарии:
1. Как я могу повторно использовать PROMOTION_SCORE для вычисления максимального Promotion_Score. Я попробовал следующий код сразу после вышеупомянутого, но он не сработал:
2. ВЫБЕРИТЕ F_Name , MAX (Promotion_Score) КАК Highest_Promotion_Score ИЗ PROMOTION_SCORE В нем говорится: сообщение 208, уровень 16, состояние 1, строка 36 Недопустимое имя объекта ‘PROMOTION_SCORE’.
3. Я хотел бы знать, как повторно использовать общую таблицу PROMOTION_SCORE более одного раза для дальнейших вычислений в других запросах
4. @Freddy, вы можете заменить запрос Select * from PROMOTION_SCORE на запрос, который вы хотели использовать. Promotion_Score будет выступать в качестве таблицы в этом контексте.
5. Спасибо, Киран. Я понял. Я добавил следующий код, и он сработал.
Ответ №2:
Кстати, точка с запятой является терминатором оператора. Дело не столько в том, что это должно быть ПЕРЕД CTE, сколько ПОСЛЕ предыдущего оператора. Бывают случаи, когда вам не нужна точка с запятой перед CTE. Например: создать представление products.specials как с my_cte как ( … ) ВЫБЕРИТЕ …
В большинстве случаев точка с запятой в tSQL не требуется, но это происходит, когда за оператором следует CTE.
Комментарии:
1. Хороший пример, но не ответ на этот вопрос! Могу ли я предложить вам опубликовать его здесь ?