Я пытаюсь запустить код, который будет обобщать список клиентов по возрастным категориям. У меня есть идентификатор клиента и его возраст, и я использую CASE WHEN для группировки возрастов в сегменты, а затем пытаюсь подсчитать идентификаторы клиентов в каждом из этих сегментов.
Для информации - поле «Дата получения помощи» - это просто дата, когда клиент был обслужен, и это просто включено в мое тестирование, чтобы сохранить небольшие результаты - поэтому я просто сосредоточился на сервисах февраля 2019 года, которые не являются оценками; и идентификатор SIR - это место, в котором была оказана услуга.
select distinct
CASE
when CD.Age between 0 and 5 then '0-5'
when CD.Age between 6 and 11 then '6-11'
when CD.Age between 12 and 14 then '12-14'
when CD.Age between 15 and 17 then '15-17'
when CD.Age between 18 and 24 then '18-24'
when CD.Age between 25 and 54 then '25-54'
when CD.Age between 55 and 64 then '55-64'
when CD.Age > 65 then '65+'
else 'Unknown'
END AS Age_Group,
count(distinct AP.Source_Individual_ID) as "Count"
from dm.Assistance_Provided AP, rpt.ClientsDemographics CD
where CD.Source_Individual_ID = AP.Source_Individual_ID
and AP.SIR_ID = '1909'
and AP.Service_Provided <> 'Assessment'
and year(AP.Assisted_Date) = '2019'
and month(AP.Assisted_Date) = 2
group by CD.Age
Если я запускаю код, исключая счетчик (отличный), я получаю 17 строк данных. Все 17 клиентов в возрасте от 18 до 24 лет, поэтому возрастная группа для всех клиентов составляет 18-24 года. Таким образом, дело, когда, кажется, работает правильно.
Однако, если я запускаю код с количеством (отличным), я получаю 3 строки данных. возрастная группа 18-24 года указана 3 раза, а число 3, 4 и 5 соответственно для 3 строк. У меня определенно есть 17 различных идентификаторов в списке, но по какой-то причине это уменьшается до 11, когда я добавляю количество (отдельно)
Я также пытался удалить отличное от выбранного, т.е.
select
CASE
when CD.Age between ....
Если я это сделаю, я получу 5 рядов - все еще с возрастной группой 18-24, но затем с 2,4,5,4,2 соответственно - так что вернемся к моему итогу 17. Но я не уверен почему я не получаю только одну строчку назад: возрастная группа: 18-24; Количество: 17
Что я делаю не так?