列值匹配时的SQL总和字段
标题很难说,但问题很简单。我在这里到处搜索,找不到我的具体问题的东西,所以它在这里。我正在使用Microsoft SQL Server Management Studio 2010 表当前看起来像这样列值匹配时的SQL总和字段,sql,sum,Sql,Sum,标题很难说,但问题很简单。我在这里到处搜索,找不到我的具体问题的东西,所以它在这里。我正在使用Microsoft SQL Server Management Studio 2010 表当前看起来像这样 | Value | Product Name| | 300 | Bike | | 400 | Bike | | 300 | Car | | 300 | Car | | TOTAL | Produc
| 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
列表中使用非聚合列时,此项适用。我更新了我的答案以反映这一点。