Вот структура таблицы:Как фильтровать первое появление в таблице только
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
Что мне нужно сделать, это:
- получить все заявитель, которые имеют
ApplyingForYear
из «2013/14» вtblApplicants
- имеет
statusID
из 4 - Я только хочу, чтобы посчитать их разы - даже если они появляются в два раза или более в
tblApplicantschools_show
- группы число различных заявителей (в соответствии с указанными выше) - по колонку
updated
даты (сгруппированная по неделе)
так на основе выборочных данных выше, должно быть 3 ро ws, которые выходят, потому что ApplicantID
13 появляется дважды, и я хочу его только один раз).
Это, как результат должен выглядеть:
Datesubmitted TotalAppsPerWeek
-------------------------------------------------------
2012-10-24 00:00:00.000 1
2012-09-24 00:00:00.000 1
2012-09-04 00:00:00.000 1
Это то, что я до сих пор - но это приводит в 4 ряда, а не 3 :(
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)
И вот Fiddle: http://sqlfiddle.com/#!3/3aa61/42
Если оба ряда для ApplicantID 13, где в течение одной недели, это будет просто вопрос добавления ApplicantID к группе, и, вероятно, потребуется добавить его к выбору. Однако, поскольку существуют разные значения для Datesubmitted, каково правило, для которого Datesubmitted и какие значения TotalAppsPerWeek вы хотите? –
Я предполагаю теперь из названия «первое появление в таблице», что самый маленький 'id' - это строка, которую нужно сохранить. Верный? –