Неверный синтаксис - SQL - PullRequest
0 голосов
/ 27 августа 2018

Я пытаюсь обновить два поля в моей таблице tbl_prev_data, используя подзапрос, потому что мне пришлось использовать агрегат SUM.Но я не знаю, почему написано

Неверный синтаксис рядом с 't'`

, где t - временная переменная, которая содержит результаты подзапроса.Я что-то пропустил ?Ниже мой запрос.

UPDATE tbl_prev_data
SET Original_Value = t.Original_Value 
SET Pre_Val = t.PreWDV
FROM tbl_prev_data 
INNER JOIN 
    (SELECT 
         Asset_Group_Code, 
         ISNULL(SUM(Original_Value),0) AS 'Original_Value', 
         ISNULL(SUM(Prev_Val),0) AS 'PreWDV' 
     FROM 
         tbl_Asset_Master 
     GROUP BY 
         Asset_Group_Code, DOP 
     HAVING 
         (YEAR(DOP) != YEAR(GETDATE()) AND MONTH (DOP) > 3) t ON tbl_prev_data.Asset_Group_Code = t.Asset_Group_Code

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

похоже проблема с закрывающей скобкой.(SELECT Asset_Group_Code, ... не закрывается с ) до t .

0 голосов
/ 27 августа 2018

Вы должны указать SET только один раз :

UPDATE tbl_prev_data
    SET Original_Value = t.Original_Value, 
        Pre_Val = t.PreWDV
FROM tbl_prev_data INNER JOIN ...

Кроме этого вам также необходимо удалить лишнюю левую скобку из предложения HAVING:

HAVING (YEAR(DOP) != YEAR(GETDATE()) AND MONTH (DOP) > 3
-------^
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...