我在这个查询中遇到语法错误,但我无法弄明白。
关键字附近的语法不正确 '组'。
我相信它在最后一组,但我没有看到什么错。任何人都可以建议如何纠正这个?
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。函数在更新集语句中,所以我试图使用子查询。
答案 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 ...);