Я создал две временные таблицы, одна из которых предназначена для заказов, а другая - для повторных заказов в течение 30 дней из временной таблицы заказов.Я хотел бы видеть оригинальный заказ и любой повторный заказ в течение 30 дней.Хотя использование двух временных таблиц сработало бы.
Первая временная таблица с именем #orders содержит все заказы за прошедший год.#orders Поля: RecordID (текст), дата заказа, дата отгрузки
Для второй таблицы я использовал функцию dateadd, чтобы получить любой заказ в течение 30 дней с даты доставки выше, она имеет те же поля (#reorder)
Select recorded, orderdate, shipdate
Into #reorder
Where shipdate between dateadd(day, 1, p.eff_to) and dateadd(day, 30,p.eff_to)
Мой запрос на получение исходного заказа и любых повторных заказов (исключая любые заказы, которые не имели повторного заказа в течение 30 дней путем объединения двух таблиц:
Select o.recordid, o.orderdate, o.shipdate, r.recordid, r.orderdate, r.shipdate
From #orders o
Left join #reorder
Where o.recordid = r.recordid and o.shipdate between dateadd(day, -30,orderdate)
and dateadd(day, -1, r.orderdate)
Iпроверил некоторые результаты, и я либо не получаю все возвращенные записи, либо возвращаем избыточные записи.
Sample data 1:
#orders
RecordID Orderdate ShipDate
525 1/8/2011 1/10/2011
525 3/22/2011 3/23/2011
525 4/5/2011 4/6/2011
525 4/12/2011 6/4/2011
#reorder Orderdate ShipDate
525 4/5/2011 4/6/2011
525 4/12/2011 6/4/2011
Results: Orderdate ShipDate
525 3/22/2011 3/23/2011
525 3/22/2011 3/23/2011
525 4/5/2011 4/6/2011
expected results
Orderdate ShipDate
525 3/22/2011 3/23/2011
525 4/5/2011 4/6/2011
525 4/12/2011 6/4/2011
Sample #2:
#orders
RecordID Orderdate ShipDate
101 2/22/2011 3/3/2011
101 5/22/2011 6/6/2011
101 6/27/2011 7/8/2011
101 7/11/2011 7/19/2011
101 11/25/2011 12/1/2011
#reorder Orderdate ShipDate
101 6/27/2011 7/8/2011
101 7/11/2011 7/19/2011
Results: Orderdate ShipDate
101 6/27/2011 7/8/2011
101 7/11/2011 7/19/2011
Expected results:
Orderdate ShipDate
101 5/22/2011 6/6/2011
101 6/27/2011 7/8/2011
101 7/11/2011 7/19/2011
tsql