2012-10-03 4 views
8

제목은 말하기가 어려웠지만 질문은 매우 간단합니다. 나는 여기에서 수색을했고, 나의 구체적인 이슈를 위해 무엇인가 찾을 수 없었다. 그래서 여기있다. 이열 값이 일치 할 때의 SQL 합계 필드

| TOTAL | ProductName | 
    | 700 | Bike  | 
    | 600 | Car   | 
처럼 -이

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

내가 나에게 제품 이름이 일치하는 값의 합계를 표시하는 테이블이 필요한 것처럼 마이크로 소프트 SQL Server 관리 Studio 2010

표는 현재 보이는 usuing 해요

나는 간단한

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

을 시도했다 그러나 위에서 작동하지 않습니다. 나는 열에있는 모든 값의 합계를 얻는다. 제품 이름 일치를 기준으로 합계를 계산하려면 어떻게해야합니까?

감사합니다. SELECT 문에서 열이 당신이 집계 함수를 사용

답변

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

SQL Fiddle Example

+0

나는 그것이 단순해야한다는 것을 알고있었습니다! 이것은 잘 작동했습니다. 감사합니다.) –

2

언제 (SUM, MIN, MAX는 ...), 당신은 GROUP BY를 사용해야합니다. 이것은 집계 기준을 그룹화 할 열을 나타내는 그룹 함수입니다. 또한 집계되지 않은 열은 SELECT 문에 포함될 수 없습니다. 당신이하지 않은 지정 열 (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 
+0

* 집계 함수 (SUM, MIN, MAX ...)를 사용할 때마다 GROUP BY. *를 사용해야합니다. * -이 값은 잘못되었으므로 전체 집합 또는 다음에 의해 제한된 부분에서 집계 할 수 있습니다. 'WHERE' 절. [SQL Fiddle Example] (http://sqlfiddle.com/#!3/a3366/3/0)을 참조하십시오. – RedFilter

+0

@RedFilter 'SELECT'목록에서 집계되지 않은 열을 사용할 때 적용됩니다. 이를 반영하여 답변을 업데이트했습니다. – Kermit