2011-06-28 8 views
0

このクエリで構文エラーが発生しましたが、わかりません。更新ステートメントでSQLサーバーの構文エラーが発生しましたが、表示されません

キーワード '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 

背景 - 私は)(カウントを更新ステートメントをやろうとしているが、もちろん、あなたがAGGを使用することはできません。更新セットステートメントの関数なので、サブクエリを使用しようとしています。

答えて

2

は最後Group Byを削除してください。最後にgroup byがこれを望んでいますか?

+0

@Abe Miessler - 再フォーマットのためにありがとう、@Andriy Mは答えにあなたを打ち負かす。 – MAW74656

+0

彼は素早く小さなおどしです。 –

+0

@ MAW74656:スクリプトを実際に再フォーマットしたのは[@Nix](http://stackoverflow.com/revisions/6513320/2)でした。 –

3

すでにGROUP BYがサブセレクト内にあるので、外側のGROUP BYは何を表していますか?

外部GROUP BYからサブセレクトのエイリアスを参照することはできません。しかし、いずれにしても、UPDATEステートメントでGROUP BYを使用することはできません。これがエラーメッセージの内容です。

+0

私は自分のコードで迷ってしまったのです。私はselect文を使ってwhere節を見つけ出し(通常はそうしたように)、その後update文が出るまで各部分を変更しました。 SQL開発者は頭痛ではいけません。ありがとう! – MAW74656

0

変更し、これにコード:

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

なぜですか?このアプローチの利点は何ですか? – MAW74656