列值匹配时的SQL求和字段

时间:2012-10-03 16:53:44

标签: sql sum

标题很难说,但问题很简单。我在这里搜索过,找不到我特定问题的内容,所以在这里。我正在使用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

但上述方法无效。我最终获得了列中所有值的总和。如何根据产品名称进行求和?

谢谢!

2 个答案:

答案 0 :(得分:15)

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

SQL Fiddle Example

答案 1 :(得分:4)

无论何时使用聚合函数(SUMMINMAX ...)和SELECT语句中的列,都必须使用{{1 }}。这是一个组函数,指示将聚合分组到哪个列。此外,任何不在聚合中的列都不能出现在GROUP BY语句中。

例如,以下语法无效,因为您指定了SELECT中不存在的列(col2)(即使MySQL允许这样做):

GROUP BY

您问题的解决方案是:

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