Это продолжение моего предыдущего вопроса . Вопрос похож на мой первоначальный, с дополнительным поворотом, который я хотел бы видеть количество предыдущих сервисов за установленный период работы. Допустим, у меня есть таблица:
id | client |date | service
1 | 1 | 1/2010 | A
2 | 1 | 1/2011 | A
3 | 1 | 1/2012 | A
4 | 1 | 1/2015 | A
Я могу подсчитать, сколько раз каждая служба выполнялась до определенной даты, используя ROW_NUMBER() OVER (PARTITION BY client, service ORDER BY date) - 1
, но как мне go узнать о запросе, показывающем количество услуг? выполнено до указанной даты, но также и в течение определенного скользящего периода?
Итак, скажем, я хотел бы знать, сколько услуг типа А было оказано только за последние 2 года. Ожидаемый результат будет:
client |date | no of prior services
1 |1/2010 | 0
1 |1/2011 | 1
1 |1/2012 | 2
1 |1/2015 | 0 - no earlier services within the last two years.
То, что у меня есть, выглядит примерно так:
select table0.*, count(table1.date)
from table table0
left outer join table table1
ON table0.client = table1.client
AND table0.date > table1.date
AND table1.date > DATEADD(year, -3, table0.date)
Но, похоже, это не работает ..