2011-10-07 3 views
1

나는 데이터베이스에서 데이터를 선택하기 위해 TSQL을 사용하고 있습니다. 나는 테이블에있는 모든 데이터를 선택하고 싶지만 ID가 중복이면 동일한 ID로 모든 열 'a'를 추가 (합)하여 단 한 행으로 만듭니다.데이터를 선택하고 중복 ID가 데이터를 더하기 (합)

출력에 중복 ID가 없어야합니다.

SELECT DISTINCT id,a,b FROM dbo.test WHERE 
    id not in (select id from dbo.test) CASE a WHEN a + a?? 

예 :

dbo.test 
======== 
id a 
1 4 
1 5 
2 3 
3 2 

output: 

1 9 <-- two ids of 1 so column 'a' is added together. 
2 3 
3 2 

답변

5
SELECT ID, SUM(a) as a, SUM(b) as B 
FROM MyTable 
GROUP BY ID 

이 설계되었습니다 무엇을 그룹화 및 집계입니다!

참고로,이 집계가 작동하는 방법이다 :

것은 당신이 그룹과 집계 필드, 단일 행에 기록을 결합하는 경우.

OP에서는 ID의 모든 값에 대해 ASUM을보고 싶습니다. 그것이 원래 게시 한 쿼리입니다.

귀하의 의견에 따라 varchar 필드 인 B도 포함하고 싶습니다.

그런 경우 B과 관련하여 결정해야합니다. 여러 행을 함께 그룹화하기 때문에 값당 B의 여러 값 (잠재적으로)이 있습니다.

  • 그룹뿐만 아니라 B하여 결과 목록에서 B 제외 등 MAX(), MIN(), 등 B
  • 에 집계를 적용 여분의 행
  • 을 추가 할 것이다 : 당신도 할 필요가있다.
+0

"집계 함수 또는 GROUP BY 절에 포함되어 있지 않기 때문에 선택 목록에 유효하지 않습니다."라는 오류가 발생합니다. 또한 B 열에 따라 그룹화하면 작동하지만 B. ID로 그룹화하지 않으려 고합니다. – tdjfdjdj

+0

@ user719825 - 편집 된 쿼리를 시도하십시오. – JNK

+0

오류. B는 varchar입니다. > 1을 (를) 가져야합니까? – tdjfdjdj

관련 문제