У меня есть таблица с доктором_идентификацией, заявкой_даты (тип даты), заявкой_дата_mo_id (тип символа) и пациентом_ид.Примерный набор данных для одного врача показан ниже:
**DOCTOR_ID** **CLAIM_DATE** **CLAIM_DATE_MO_ID** **PATIENT_ID**
22222 7/29/2015 201507 12769998
22222 9/29/2015 201509 12769998
22222 9/7/2016 201609 756850
22222 10/6/2016 201610 756850
22222 4/11/2017 201704 837125
22222 4/11/2017 201704 837125
22222 4/11/2017 201704 837125
22222 4/13/2017 201704 892834
22222 5/15/2017 201705 837125
22222 5/15/2017 201705 837125
22222 5/15/2017 201705 837125
22222 7/6/2017 201707 892834
22222 9/6/2017 201709 17539987
22222 9/19/2017 201709 837125
22222 10/3/2017 201710 756850
22222 10/3/2017 201710 756850
22222 10/9/2017 201710 17539987
Вывод должен быть следующим:
**DOCTOR_ID** **CLAIM_DATE_MO_ID** **count(distinct patient)**
22222 201507 1
22222 201509 1
22222 201609 1
22222 201610 1
22222 201704 3
22222 201705 3
22222 201707 3
22222 201709 4
22222 201710 4
Количество - это число отдельных пациентов, которые доктор осмотрел за текущий месяц.до последних 11 месяцев.Например, 201507 обозначает период (201507-201408).
Примечание: я должен взять максимальное количество отдельных пациентов за любой период.
Один сценарий предназначен для month_id 201704, где количество отдельных пациентов за последние 11 месяцев (исключая текущий месяц 201704) равноС 2 по 11 апреля, но за 13 апреля число отдельных пациентов меняется на 3, что должно быть зафиксировано.
Таким образом, для 201704 года должно быть 3.
Я пробовал следующий запрос, но не получаюжелаемый вывод.
sel doctor_id,case when to_number(claim_date_mo_id)-lookback_12m is not null then claim_date_mo_id||lookback_12m end,count(distinct patient_id)
from
(
sel doctor_id,patient_id,claim_date_mo_id ,
to_number(to_char(cast(trim(claim_date_mo_id)||'01' as date format'YYYYMMDD') - interval '11' month 'YYYYMM')) as lookback_12m
from table
where doctor_id=22222
) A
group by 1,2