У меня есть следующая таблица:
;with data as (
select '508325' as [customer], 'G61' as [demo_given],
cast('2015-1-1' as date) as [date_of_demo]
union all select '508325', 'G61', cast('2015-3-1' as date)
union all select '508325', 'G61',cast('2015-3-15' as date)
union all select '508325', 'G61',cast('2015-3-16' as date)
union all select '508325', 'G61',cast('2015-3-17' as date)
union all select '508325', 'G61',cast('2015-6-1' as date)
union all select '508325', 'G61',cast('2015-8-1' as date)
union all select '508325', 'G61',cast('2015-9-1' as date)
union all select '508325', 'G61',cast('2015-9-1' as date)
union all select '508325', 'G61',cast('2015-12-1' as date)
)
На одного клиента может быть предоставлено только 3 демонстрации в течение 4 месяцев. Первый период начинается с момента предоставления первой демо-версии и заканчивается через 4 месяца.
Если количество демонстраций за этот период превышает 3, мне нужны даты демонстраций 4 и более поздних версий в течение этого 4-месячного периода. (в этом примере это будут 2015-3-16
и 2015-3-17
)
Следующий период начинается с даты первой демонстрации, предоставленной после первых четырех месяцев. Поэтому мне нужно подсчитать количество демонстраций в период с 2015-6-1
до 2015-9-30
и вернуть даты возможных «избыточных» демонстраций, указанных в этот период.
Как мне это сделать?