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

每当您在语句中使用带有列的聚合函数 ( SUM, MIN, ... ) 时,都必须使用. 这是一个组函数,它指示聚合所依据的列。此外,任何不在聚合中的列都不能在您的语句中。MAXSELECTGROUP BYSELECT

例如,以下语法无效,因为您指定的列 ( col2) 不在您的范围内GROUP BY(即使 MySQL 允许这样做):

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 回答