更新语句中的SQL服务器语法错误,但我看不到它

时间:2011-06-28 21:31:10

标签: sql sql-server tsql sql-server-2000

我在这个查询中遇到语法错误,但我无法弄明白。

  

关键字附近的语法不正确   '组'。

我相信它在最后一组,但我没有看到什么错。任何人都可以建议如何纠正这个?

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 个答案:

答案 0 :(得分:3)

你已经在subselect中有了GROUP BY,那么外部GROUP BY代表什么?

您无法在外部GROUP BY的子选择中引用别名。但无论如何,你不能将GROUP BY与UPDATE语句一起使用,这就是错误信息的内容。

答案 1 :(得分:2)

尝试删除最后一个Group By。你究竟希望最后group by能做什么?

答案 2 :(得分:0)

将代码更改为:

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