我們有一個數據庫,其中包含有關項目預訂時間的信息。我們有一個項目的實時記錄,它包含正確的時間信息(每週從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在2009年9月1日或之前開始項目1234。
忽略別人說遊標是壞的。他們只是不明白。如果他們試圖用鑽頭將釘子釘入牆上,那不是鑽頭的缺點。 – 2009-09-22 09:19:27
雖然我不會說'絕對不需要使用遊標',但要養成基於集合的邏輯和思維的習慣是非常重要的。當一個非常簡單的基於集合的查詢能夠以簡單,簡單和快速的方式解決問題時,總是直接進入循環,遊標和程序思維是很多錯誤。 – 2009-09-22 12:03:26
這恰恰與Access有關? – 2009-09-23 01:51:59