2011-07-03 4 views
1

레코드가 긴 데이터베이스가 있습니다. 대부분의 열은 다른 테이블에 대한 외래 키를 가지고 있습니다.SQL Server - 그룹화, 혼합 및 개수 계산

:

ID SectorId BranchId 
-- -------- -------- 
5 3  5 

그리고 내가 부문, 나뭇 가지 요법이있는 테이블이있을 것이다.

내 문제는 :

나는 N ... 섹터 1, 2, 3이있는 레코드 수를 알고 싶어요. 그래서 내가 원하는 것은 group by Sector이고 그 다음에는 얼마나 많은 것이 각각 있는지 알려주는 약간의 count(*)입니다.

SectorId Count 
-------- ----- 
1  3 
2  10 
3  4 
4  6 

내 시도가 지금까지

내가 정상적으로 작동하지 않습니다

예상 출력

그래서 예를 들어, 내가 20이있는 경우 결과는 다음과 같을 수 기록 많은 데이터베이스와 나는 이것을 1.5 시간 동안 풀려고 노력했다. 나는 다음과 같이 시도했다 :

SELECT COUNT(*) 
FROM Records r 
GROUP BY r.Sector 
WHERE r.Date BETWEEN '2011-01-01' AND '2011-12-31' 

하지만 ... 오류와 문제!

정말 도움이됩니다. 나는 이것이 아마도 매우 간단하다는 것을 알고있다.

감사합니다.

답변

4

검색어 시퀀스가 ​​올바르지 않습니다. 그것은 다음과 같이해야합니다 : - 당신이 두 부문을 가져오고 조금 쿼리를 수정해야 다음 계산하려면

SELECT COUNT(*) 
FROM Records r 
WHERE r.Date BETWEEN '2011-01-01' AND '2011-12-31' 
GROUP BY r.Sector 

는 출력은

count 
----- 
3 
10 
4 
6 

을 즉에만 카운트됩니다

SELECT r.Sector, COUNT(*) as Count 
FROM Records r 
WHERE r.Date BETWEEN '2011-01-01' AND '2011-12-31' 
GROUP BY r.Sector 

출력은 다음과 같습니다. -

Sector Count 
------ ----- 
1  3 
2  10 
3  4 
3  6 
+0

감사합니다 많이! :-) 그것은 정말로 나를 도왔다! –

1

검색어가 부분적으로 맞았지만 약간 수정해야합니다.

내가 이런 식으로 작성하는 경우 : -

SELECT r.SectorID,COUNT(*) AS count 
FROM Records r 
WHERE r.Date BETWEEN '2011-01-01' AND '2011-12-31' 
GROUP BY r.SectorID 

그런 다음 출력 될 것입니다 : -

SectorID Count 
1   3 
2   10 
3   4 
4   6