Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
列值匹配时的SQL总和字段_Sql_Sum - Fatal编程技术网

列值匹配时的SQL总和字段

列值匹配时的SQL总和字段,sql,sum,Sql,Sum,标题很难说,但问题很简单。我在这里到处搜索,找不到我的具体问题的东西,所以它在这里。我正在使用Microsoft SQL Server Management Studio 2010 表当前看起来像这样 | Value | Product Name| | 300 | Bike | | 400 | Bike | | 300 | Car | | 300 | Car | | TOTAL | Produc

标题很难说,但问题很简单。我在这里到处搜索,找不到我的具体问题的东西,所以它在这里。我正在使用Microsoft SQL Server Management Studio 2010

表当前看起来像这样

  | Value | Product Name|
  |  300  | Bike        |
  |  400  | Bike        |
  |  300  | Car         |
  |  300  | Car         |
  | TOTAL | ProductName |
  |  700  | Bike        |
  |  600  | Car         |
我需要这个表来显示产品名称匹配的值的总和-如下所示

  | 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
但上述方法不起作用。我最终得到了列中所有值的总和。如何根据产品名称匹配进行求和

谢谢

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

无论何时使用聚合函数(
SUM
MIN
MAX
…)以及
SELECT
语句中的列,都必须使用
分组依据。这是一个group函数,用于指示按哪个列对聚合进行分组。此外,不在聚合中的任何列都不能在
SELECT
语句中

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

你的问题的解决办法是:

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

我就知道应该简单点!这很管用。谢谢=)无论何时使用聚合函数(SUM、MIN、MAX…),都必须使用GROUP BY。-这是不正确的,您可能希望对整个集合进行聚合,或者对受
WHERE
子句限制的部分进行聚合。请参阅@RedFilter应明确说明,当在
SELECT
列表中使用非聚合列时,此项适用。我更新了我的答案以反映这一点。