Как рассчитать разницу между двумя строками в интервале дат?
Я пытаюсь сравнить данные из базы данных Access 2010 на основе интервала дат. Пример. У меня есть элементы из разных заказов на покупку, и я хочу сохранить историю доставки этого товара на склад. Таким образом, у моего заказа на поставку есть запрос на количество 10 материалов, например, и он может быть частично доставлен во многих поставках, и я хочу знать, как эта доставка менялась в интервале дат. Чтобы заполнить поле даты, используются следующие критерии: если элемент имел обновление в поле QtyPending, я копирую текущую строку, дезактивирую ее с помощью поля booelan, создавая новую запись с текущей датой обновления, обновляющей поле QtyPending, поэтому активная запись - это фактическое состояние элемента. Таким образом, у меня есть таблица, которая содержит информацию об этих элементах, как этого
PO POItem QtyPending Date Active 450000/09/2014 FALSE 450000/09/2014 TRUE 4500000122 30 5 03/09/2014 FALSE 4500000122 30 1 04/09/2014 TRUE
В этом примере для первого элемента, то это означает, что с даты 01/09 до 04/09 поле QtyPending не пострадало вариант, означающий, что поставщик не сделал мне никакой доставки, но с 01/09 по 05/08 он доставил мне 2 штуки. Для второго, с даты 03/09 до 04/09, поставщик доставил мне 4 штуки. Так, если бы я, чтобы делать запрос отчета от 02/09/2014 до 04/09/2014, ожидаемый выход таков:
PO POItem QtyDelivered 450000 4500000122 30 4
И отчет от 31/08/2014 10/09/2014, будет иметь этот выход
PO POItem QtyDelivered 450000 4500000122 30 4
Я не придумывая запроса, чтобы сделать этот отчет. Может кто-нибудь мне помочь?
дата может пролеты принимать более двух записей? Что делает поле «Актив»? (Больше вопросов, чтобы следовать ... это не очень понятно!) – Smandoli
Ваши требования звучат очень похоже на предыдущий вопрос [здесь] (http://stackoverflow.com/q/26046828/2144390). Проверьте ответы и посмотрите, поможет ли вам одна из них. ([Мой ответ] (http://stackoverflow.com/a/21033184/2144390) показывает, как использовать * self-join *, чтобы избежать циклов набора записей.) –
Smandoli, активное поле, если FALSE, это говорит о том, что запись хранится только в исторических целях для запроса прошлых состояний элементов. И если активна TRUE, значит текущее состояние элементов, поэтому, если я хочу запросить только фактическое состояние элемента, единственное, что мне нужно сделать, это WHERE Active = TRUE –