当我对行进行计数时(代码 #1) - 我得到了大约 880 行的正确计数。
当我按日期对计数进行分组时 - 它突然增长了大约 100(代码 #2)。
如果有人可以帮助我理解我的问题,我将不胜感激!
提前致谢!
这是表结构:
tblApplicants:
applicantID (index) | ApplyingForYear (nvarchar)
------------------------------------------------------
1 2013/14
11 2013/14
13 2013/14
12 2013/14
15 2013/14
21 2012/13
tblApplicantSchools_shadow:
id (index) | applicantID | updated (datetime) | statusID (int) | schoolID (int)
-----------------------------------------------------------------------------------------------------
1 11 2012-09-24 00:00:00.000 3 2
1 13 2012-10-24 00:00:00.000 4 2
2 15 2012-11-24 00:00:00.000 3 4
3 13 2012-03-24 00:00:00.000 4 3
4 12 2012-09-24 00:00:00.000 4 1
5 21 2012-11-03 00:00:00.000 5 2
6 11 2012-09-04 00:00:00.000 4 4
代码#1(正确计数):
select count(DISTINCT [tblApplicantSchools_shadow].applicantID) as TotalAppsPerWeek FROM tblApplicants
INNER JOIN tblApplicantSchools_shadow ON tblApplicantS.ApplicantID = tblApplicantSchools_shadow.applicantID
WHERE ApplyingForYear = '2013/14' and [tblApplicantSchools_shadow].statusID = 4
代码#2(组,计数不正确):
select DATEADD(ww,(DATEDIFF(ww,0,[tblApplicantSchools_shadow].updated)),0) AS Datesubmitted ,count(DISTINCT [tblApplicantSchools_shadow].applicantID) as TotalAppsPerWeek FROM tblApplicants
INNER JOIN tblApplicantSchools_shadow ON tblApplicantS.ApplicantID = tblApplicantSchools_shadow.applicantID
WHERE ApplyingForYear = '2013/14' and [tblApplicantSchools_shadow].statusID = 4
group by DATEADD(ww,(DATEDIFF(ww,0,[tblApplicantSchools_shadow].updated)),0)
order by DATEADD(ww,(DATEDIFF(ww,0,[tblApplicantSchools_shadow].updated)),0)
期望的结果:
Datesubmitted TotalAppsPerWeek
-------------------------------------------------------
2011-11-14 00:00:00.000 1
2012-09-24 00:00:00.000 1
2012-10-08 00:00:00.000 3
2012-10-22 00:00:00.000 2
2012-10-29 00:00:00.000 2
2012-11-05 00:00:00.000 2
2012-11-12 00:00:00.000 5
2012-11-19 00:00:00.000 26
2012-11-26 00:00:00.000 106
2012-12-03 00:00:00.000 353
2012-12-10 00:00:00.000 298
小提琴代码: http ://sqlfiddle.com/#!3/3aa61/10