2013-05-10 2 views
2

이것은 기본적으로 달성하려는 것입니다.WHERE 절 또는 COUNT 내에 COUNT가 있습니까?

SELECT 
COUNT(DISTINCT No) 
FROM 
Table 
WHERE 
(Type = 1 AND COUNT(DISTINCT No) > Num) 
OR (Type = 2 AND COUNT(DISTINCT No) > Num) 
GROUP BY 
Week 

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

답변

2

모든 집계 비교 그룹으로 후 HAVING 절에 갈 필요가있다. 집계가 아닌 조건부를 두는 위치에 따라 다른 결과를 얻을 수도 있다는 것을 기억하십시오. WHERE를 통해 포함/제외 된 항목을 집계 할 것이기 때문입니다. 당신은 주에 의해 그룹화하는 경우

SELECT COUNT(DISTINCT No) 
FROM Table 
WHERE Type = 1 
GROUP BY Week 
HAVING COUNT(DISTINCT No) > Num 

은 확실히 당신은 카운트가되는 주보고 싶어,

SELECT COUNT(DISTINCT No) 
FROM Table 
GROUP BY Week 
HAVING COUNT(DISTINCT No) > Num 
AND Type = 1 
+0

답변 해 주셔서 감사합니다. 집계에 포함되지 않았기 때문에 형식이 Having 절에 유효하지 않다는 오류 메시지가 나타납니다 ...이를 그룹에 추가해야합니까? – DtotheG

+0

Ooops, 좋은 지적입니다. Type이 그룹화되지 않았거나 집계가 아니기 때문에 후자의 명령문은 작동하지 않습니다. – ludwigmace

0

사용

덕분에이 :

SELECT 
COUNT(DISTINCT No) as num1 
FROM TableName 
WHERE Type IN (1,2) 
GROUP BY Week 
HAVING num1 > Num 
0
SELECT Week, Type, COUNT(DISTINCT No) WeekTally 
    FROM [Table] 
    WHERE Type in (1,2) 
GROUP BY Week, Type 
    HAVING COUNT(DISTINCT No) > @Num 
ORDER BY Week, Type; 

에서 다를 수있다?!