私が会社のテーブルを持っているとしましょう:
Company
coID | coName | coCSR
このcoCSR
フィールドは、アカウントハンドラテーブルに関連する数値IDです。
AccountHandler
ahID | ahFirstName | ahLastName
注文の表もあります。
Order
orID | orCompanyID | orDate | orValue
今、私が作成する必要があるのは、次のように構造化された出力です。
Company | Account handler | No. of orders | Total of orders
これが私が試したクエリで、エラーが発生します。
SELECT coID, coName, ahFirstName+' '+ahLastName AS CSRName, COUNT(orID) AS numOrders, SUM(orValue) AS totalRevenue
FROM Company
LEFT JOIN AccountHandler ON coCSR = ahID
LEFT JOIN Order ON coID = orCompanyID
WHERE coCSR = 8
AND orDate > getdate() - 365
ORDER BY coName ASC
エラーは次のとおりです。列名'AccountHandler.ahLastName'は、集計関数に含まれておらず、GROUP BY句がないため、ORDERBY句では無効です。
を使用すると、キーワード「WHERE」の近くに誤った構文GROUP BY coID
が表示されます。集計関数のためにに変更すると、集計関数またはGROUPBY句のいずれにも含まれていない他の各列名を削除するように指示するエラーが発生します。WHERE
HAVING
認めざるを得ません。最も基本的なSQLコマンド以外のロジックと構文はまだ理解していません。以前に使用したものを適用しようとしているだけで、機能していません。これを機能させるために私を助けてください。さらに良いことに、現時点で機能しない理由を理解するのを手伝ってもらえますか?:)