【问题标题】:SQL server syntax error in update statement, but I can't see it更新语句中的 SQL 服务器语法错误,但我看不到它
【发布时间】:2011-06-28 21:31:09
【问题描述】:

我在此查询中遇到语法错误,但我无法弄清楚。

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

我相信它在最后一组,但我看不出有什么问题。谁能建议如何纠正这个问题?

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

BACKGROUND - 我正在尝试使用 Count() 执行更新语句,但您当然不能使用 agg。更新集语句中的函数,所以我尝试使用子查询。

【问题讨论】:

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


    【解决方案1】:

    您已经在子选择中获得了 GROUP BY,那么外部的 GROUP BY 代表什么?

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

    【讨论】:

    • 我迷失在我的代码中就是这样。我从一个 select 语句开始找出 where 子句(就像我通常做的那样),然后更改每个部分,直到我得到 update 语句。不应该头疼地做 SQL 开发。谢谢!
    【解决方案2】:

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

    【讨论】:

    • @Abe Miessler - 感谢重新格式化,@Andriy M 击败了你。
    • @MAW74656:实际上是 @Nix 重新格式化了您的脚本。
    • @Abe:我真的很高兴在看到您的评论之前支持了您的回答。
    • 大声笑,这是一种恭维!
    • @Andriy M -好的,我现在明白了。 @Abe Miessler 添加了标签。 @Nix - 感谢您的格式。
    【解决方案3】:

    把代码改成这样:

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

    【讨论】:

    • 为什么?这种方法比我的有什么优势?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    • 1970-01-01
    相关资源
    最近更新 更多