12

タイトルは難しかったですが、質問はとてもシンプルです。ここ全体を検索しましたが、特定の問題について何かを見つけることができなかったので、ここにあります。Microsoft SQL Server Management Studio 2010 を使用しています。

表 現在はこんな感じ

  | Value | Product Name|
  |  300  | Bike        |
  |  400  | Bike        |
  |  300  | Car         |
  |  300  | Car         |

製品名が一致する値の合計を表示するテーブルが必要です-このように

  | TOTAL | ProductName |
  |  700  | Bike        |
  |  600  | Car         |

シンプルにやってみた

 SELECT
      SUM(Value) AS 'Total'
      ,ProductName
 FROM TableX

しかし、上記は機能しません。列のすべての値の合計を取得することになります。製品名の一致に基づいて合計するにはどうすればよいですか?

ありがとう!

4

2 に答える 2

18
SELECT SUM(Value) AS 'Total', [Product Name]
FROM TableX  
GROUP BY [Product Name]

SQLフィドルの例

于 2012-10-03T16:55:51.227 に答える
4

ステートメント内の列で集計関数 ( SUMMIN、 ... ) を使用する場合は常に、 を使用する必要があります。これは、集計をグループ化する列を示すグループ関数です。さらに、集計に含まれていない列をステートメントに含めることはできません。MAXSELECTGROUP BYSELECT

たとえば、次の構文は無効です。なぜなら、 (MySQL ではこれが許可されていてもcol2) にない列 ( ) を指定しているためです。GROUP BY

SELECT col1, col2, SUM(col3)
FROM table
GROUP BY col1

あなたの質問に対する解決策は次のとおりです。

SELECT ProductName, SUM(Value) AS 'Total'
FROM TableX
GROUP BY ProductName
于 2012-10-03T17:16:05.387 に答える