Ошибка синтаксиса сервера SQL в операторе обновления, но я не вижу ее - PullRequest
0 голосов
/ 29 июня 2011

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

Неверный синтаксис рядом с ключевым словом 'group'.

Я верю, что он в последней группе, но я не вижу, что не так.Кто-нибудь может подсказать, как это исправить?

UPDATE [NCLGS].[dbo].[CP_CustomerShipTo]
SET     TimesUsed = TimesUsed + B.NewCount
from [NCLGS].[dbo].[CP_CustomerShipTo] CST
INNER JOIN (    
    Select
        PKH.CompanyCode, 
        PKH.CompanyName, 
        PKH.Addr1, 
        PKH.Addr2, 
        PKH.City, 
        PKH.State, 
        PKH.Zip, 
        Count(recid) As NewCount
    from avanti_packingslipheader PKH 
    where pksdate > dbo.ufn_StartOfDay(DATEADD(d, -1, GETDATE() ) )   
    group by 
        PKH.CompanyCode, 
        PKH.CompanyName, 
        PKH.Addr1, 
        PKH.Addr2, 
        PKH.City, 
        PKH.State, 
        PKH.Zip 
) B 
ON CST.CustomerCode     =   B.CompanyCode
   AND CST.ShipToName       =   B.CompanyName
   AND CST.ShipToAddress1   =   B.Addr1
   AND CST.City             =   B.City
   AND CST.PostalCode       =   B.Zip

group by 
    PKH.CompanyCode, 
    PKH.CompanyName, 
    PKH.Addr1, 
    PKH.Addr2, 
    PKH.City, 
    PKH.State, 
    PKH.Zip

ПРЕДПОСЫЛКИ - Я пытаюсь сделать оператор обновления с помощью Count (), но, конечно, вы не можете использовать agg.функции в операторе набора обновлений, поэтому я пытаюсь использовать подзапрос.

Ответы [ 3 ]

3 голосов
/ 29 июня 2011

У вас уже есть GROUP BY внутри подвыбора, так что же означает внешняя GROUP BY?

Нельзя ссылаться на псевдоним в подвыборе из внешнего GROUP BY.Но в любом случае вы не можете использовать GROUP BY с оператором UPDATE, и именно об этом говорится в сообщении об ошибке.

2 голосов
/ 29 июня 2011

Попробуйте удалить последний Group By. На что именно вы надеетесь, что этот последний group by сделает?

0 голосов
/ 29 июня 2011

Измените код на это:

update mytable set
mycolumn = mycolumn + (select x from ...);
...