Моя база данных на самом деле не клиенты и заказы, это клиенты и рецепты для их глазных тестов (на тот случай, если кому-то будет интересно, почему я хочу, чтобы мои клиенты делали заказы реже!)
У меня есть база данных для сети оптиков, в таблице рецептов есть идентификационный номер отделения, идентификационный номер пациента и дата, когда у них были проверены глаза. Со временем у пациентов будет больше, чем один глазной тест, перечисленный в базе данных. Как я могу получить список пациентов, которым рецепт был введен в систему более одного раза в шесть месяцев. Другими словами, если дата одного рецепта указана, например, в течение трех месяцев с даты предыдущего рецепта для того же пациента.
Пример данных:
Branch Patient DateOfTest
1 1 2007-08-12
1 1 2008-08-30
1 1 2008-08-31
1 2 2006-04-15
1 2 2007-04-12
Мне не нужно знать фактические даты в наборе результатов, и это не обязательно должно быть ровно три месяца, просто список пациентов, у которых рецепт слишком близок к предыдущему рецепту. В приведенных примерах данных я хочу, чтобы запрос возвращал:
Branch Patient
1 1
Этот тип запроса не будет выполняться очень регулярно, поэтому я не слишком обеспокоен эффективностью. В нашей оперативной базе данных у меня четверть миллиона записей в таблице рецептов.