У нас есть база данных, содержащая информацию о времени, забронированном для проектов. У нас есть живая запись для проекта, которая содержит правильную информацию о времени (импортируется из SAP один раз в неделю).Для каждого SQL-запроса
У нас также есть архивные записи, показывающие информацию о времени в определенный момент времени, они принимаются один раз в неделю, по сути, это мгновенные снимки. Возможно, пользователи могут позже запросить корректировку времени на проекте. Если это произойдет, живая запись будет отображать правильное время для проекта, однако снимков не будет. Мне нужно написать запрос, который проходит и обновляет эти снимки с правильным временем для проекта, в этот момент времени.
У нас есть таблица данных SAP, в которой есть записи для каждой записи времени для проекта, с указанием кода проекта, для которого он был указан, даты, в которую она была предназначена, и количества времени. В таблице «Исторические данные» содержится код проекта и дата снятия снимка. Поэтому мне нужно написать SQL-запрос, который будет проходить через таблицу исторических данных, и для каждой строки обновлять время, затраченное на просмотр таблицы SAP и получение всех временных записей для этого кода проекта до даты, когда был сделан снимок ,
У меня возникают трудности с этим в одном SQL-запросе, основная проблема заключается в том, что мне действительно нужно запускать запрос для каждой записи в таблице исторических данных. Я продолжаю придумывать страницы, предлагающие использовать курсоры, но я не знаю много о них и продолжаю видеть статьи, говорящие, что они плохие. Любые предложения о том, какой запрос я могу использовать, чтобы справиться с этим, были бы замечательными!
По сути то, что я хочу сделать в псевдокод:
For Each Project Code in the hostorical data table, archived on a date, select all time entrys on or before that date.
Образцы таблиц
Historical Project Data SAP Data
----------------------- ----------------
Project Code | run date Project Code | Time | Date
1234 | 01/09/2009 1234 | 2 | 29/08/2009
9876 | 01/09/2009 1234 | 5 | 29/08/2009
1234 | 07/09/2009 9876 | 10 | 02/09/2009
9876 | 07/09/2009 1234 | 2 | 03/09/2009
Так что я хотел бы закончить с запросом, который показывает
Project Code | run date | time
1234 | 01/09/2009 | 7
9876 | 01/09/2009 | 0
1234 | 07/09/2009 | 9
9876 | 07/09/2009 | 10
Так, например, первая запись в запросе показывает все часы b окутано в проект 1234, не позднее 01/09/2009
Игнорирование люди говорят курсоры плохо. Они просто этого не понимают. Если они пытаются забить гвоздь в стену с помощью сверла, это не ошибка сверла. –
Хотя я бы не сказал: «Никогда не используйте курсор, если это абсолютно необходимо», очень важно получить привычку к логике и мышлению на основе набора. Ошибочно, что многие всегда обращаются к циклам, курсорам и процессуальному мышлению, когда простой простой набор-запрос может решить проблему простым, простым и быстрым способом. –
Это как раз то, что делать с Access? –