MySQL 쿼리를 작성하여 주어진 기간에 여러 카테고리의 항목 수를 확인합니다. 내 초기 시도는이처럼 보였다 :GROUP BY/HAVING을 사용하여 서브 팩을 리팩토링합니까?
select Title,
(select count(*) from entries where CategoryID=1
and Date >= @StartDate and Date <= @EndDate) as Cat1,
(select count(*) from entries where CategoryID=2
and Date >= @StartDate and Date <= @EndDate) as Cat2,
(select count(*) from entries where CategoryID is null
and Date >= @StartDate and Date <= @EndDate) as UnkownCategory
from entries
where Date >= @StartDate and Date <= @EndDate
표는 매우 크고, 내가 속도를 쿼리를 리팩토링하고 싶습니다,하지만 난 방법을 잘 모르겠어요 -이 HAVING/GROUP BY를 사용하여 다시 작성 될 수있다 나는 또 다른 방법이 있습니까?
편집 : 샘플 결과 집합 -이 같은 :
Title | Category 1 Total | Category 2 Total | Unknown Category Total
ABC 1 3 0
DEF 2 7 2
당신이 예를 들어 결과 집합을 제공 할 수 있습니다 : 다른 결과 레이아웃을 반환하지만, 약간의 개념적으로 간단 것
대안? –
피벗 쿼리를 수행하고 있습니다. – Loki