当我在行上进行计数(代码#1) - 我得到大约880行的正确计数。MS-SQL:SQL“组”创建重复项?
当我按日期分组计数时,它突然增长大约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
FIDDLE CODE:http://sqlfiddle.com/#!3/3aa61/10
感谢。我需要的是独特的,因为可能有几个条目与具有'statusID = 4'的相同'applicantID' - 我只希望其中一个 - 每个申请人ID – kneidels 2013-03-12 09:18:27
那么为什么你需要第二组? – 2013-03-12 09:28:02
你是对的 - 这是我扔在一起的部分代码。我正在分组,以便我可以看到有多少申请人 - 在某一天。这样,我正在计数+日期,这里是实际的代码: 'select DATEADD(ww,(DATEDIFF(ww,0,[tblApplicantSchools_shadow] .updated)),0)AS Datesubmitted,count(DISTINCT [tblApplicantSchools_shadow] .applicantID)作为TotalAppsPerWeek' – kneidels 2013-03-12 09:43:40