Запрос, если у идентификатора клиента был предыдущий заказ на прошлой неделе: Как? - PullRequest
1 голос
/ 21 июня 2011

Я использую SQLite 3.7.4 и у меня есть таблица, которая включает:

TABLE: 'Orders'
ID     OrderDate
1234   2011-06-01 00:00:00
1245   2011-06-04 00:00:00
1234   2011-06-05 00:00:00

Я бы хотел иметь возможность выбрать «OrderDate» и «ID» где для заданной OrderDateэто предыдущий заказ за последнюю 1 неделю.

Итак, для данных выше:

  • Первый идентификатор записи 1234 имеет заказ на 2011-06-01 00: 00: 00, но не имеет предыдущего - поэтому не выбрано.

  • Следующий идентификатор записи 1245 имеет заказ на 2011-06-04 00:00:00, но ни один за неделю до 2011-06-04, поэтому не выбран.

  • 3-й заказ с идентификатором 1234, сделанный в 2011-06-05 00:00:00, имеет предыдущий заказ в 2011-06-01, поэтому эта запись выбрана.

Мне почти удалось разобраться, используя strftime('%s',OrderDate) для разницы дат, но я не могу понять, как сделать запрос, взяв часть yyyy-mm-dd записи OrderDate и оглядываясь назад'-7 дней', чтобы увидеть, есть ли 1 или более записей в этом диапазоне?

Любое руководство приветствуется:)

1 Ответ

1 голос
/ 21 июня 2011

Не уверен, что я понимаю, но это дает результат, который вы ищете, учитывая данные образца.

sqlite> select o1.id, o1.orderdate from orders o1
   ...> inner join orders o2 on (o1.id = o2.id
   ...> and o2.orderdate >= date(o1.orderdate, '-7 day')
   ...> and o2.orderdate < o1.orderdate);
1234|2011-06-05

Вам, вероятно, стоит взглянуть на SQLite Функции даты и времени .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...