se da tabela:
Nume | CodMare | CallDate
N1 C1 7.15.2009
N2 C2 7.28.2009
N3 C3 7.16.2009
N2 C2 7.29.2009
se doreste selectarea numarului total de apeluri care persoanele N(x), efectuate in perioada
@firstDayOfPrevMonth -@mydate.
luand de ex. @mydate=24.07.2008, selectul o sa intoarca persoanele N1 si N3 de forma
Nume | CodMare | Total
N1 C1 1
N2 C2 1
ce vreau insa, este ca si clientul N2 sa apara in rezultat, cu 0 la total, deci:
Nume | CodMare | Total
N1 C1 1
N2 C2 0
N3 C3 1
mai jos e ceea ce am incercat, si-mi intoarce rezultatul fara N2
DECLARE @mydate DATETIME, @firstDayOfPrevMonth datetime,@firstDayOfCurentMonth datetime
set @mydate = GETDATE(); --pt exemplu, data de azi, 24 iulie 2009
set @firstDayOfPrevMonth = CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(DATEADD(mm,1,@mydate))-1),DATEADD(mm,-1,@mydate)),101);
set @firstDayOfCurentMonth = CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(@mydate)-1),@mydate),101)
select nume,convert(VARCHAR(25),(case when count(distinct h.codmare) is null then 0 else 1 end)) from Table1 h
where calldate between @firstDayOfCurentMonth and @mydate
GROUP BY h.nume