2017-07-07 16 views
2

ゴードン・リノフが私に他のものを編集すると失礼になるかもしれないと言いましたので、私はこの質問を書き直しています - これは重複ではなく、ちょうど修正です。合計式集計エラー

私は、クエリを記入するときに来るすべての注文の価格を合計するコードを書こうとしています。たとえば、1〜60のID範囲を入力すると、IDの1〜60のすべての価格を合計した合計列が作成されます。

私はSUM(.....)AS Exp 1を作成するだけで十分だと思っていましたが、IDと集約関数に問題があることがわかります。

個々の価格と、これらの価格を合計した新しい列が表示されます。後でテーブルにデータの列を追加する予定です。

私の現在のコードは次のようになります。

SELECT table.ID, table.Price, SUM(table.Price) AS Exp 1 
FROM table 
WHERE table.ID BETWEEN StartID AND EndID 

は、あなたがあなたの集計文を使用して、コンセプトのエラーを持っている任意のヘルプ

+0

集計されていない列で「グループ化」を追加します。 –

+0

他の質問を削除する必要があります。 – SandPiper

答えて

1

いただきありがとうございます。このクエリを実行すると、WHERE句は最初に評価され、ユーザー指定の開始点と終了点の間にないすべてのIDが除外されます。次に、GROUP BY句を忘れて、何をグループ化する必要があるかを教えてください。 table.Priceフィールドを削除します。そうでなければ、あなたはあなたが望むものではない各価格の一意のレコードを取得します。

SELECT t.ID, SUM(t.Price) AS Price_Summary 
FROM table t 
WHERE t.ID BETWEEN StartID AND EndID 
GROUP BY t.ID 

また、別名は可読性を向上させるのに役立ちます。

EDIT

私はこれがあなたに取得しようとしているものかもしれないと思うが、私はまだ不明です。

SELECT t.ID, SUM(t.Price) AS Price_Summary, 
    (SELECT SUM(t2.Price) FROM table t2 WHERE t2.ID BETWEEN StartID AND EndID) AS Total_Price 
FROM table t 
WHERE t.ID BETWEEN StartID AND EndID 
GROUP BY t.ID 

これは、あなたのIDの全てを設定し、結果、そのIDを持つすべての価格の合計、その後、総和を与えるだろう。したがって、次のようになります。

ID | Price_Summary | Total_Price 
1 10    60 
2 30    60 
3 20    60 
+0

これは完璧に機能しますが、私はIDのすべての価格を合計しようとしています(私の総額を得るため)。これをやりたければ、GROUP BYコマンドを取り除いて、別の列の1つのセルに1つの巨大な合計を表示するだけですか? – nola94

+0

上記の私のコメントを修正して、コマンドでグループを単に削除しようとしましたが、IDの集約エラーが表示されました。私はこれがうまくいくと思ったが、私は間違っていたと思う。アドバイスはありますか? – nola94

+0

合計を取得するには、SELECT句からt.IDを削除し、GROUP BY句を完全に削除します。 – SandPiper