我有2個表。對於這個例子,我將只使用一個用戶記錄。 第一臺具有用戶名和評估日期爲這樣:SQL Server 2005 - 如何從一個表中獲取記錄並通過另一個表尋找匹配的循環
USER EVALDATE
--------------
bobr 6/7/2010
bobr 9/20/2010
bobr 9/21/2010
上述表需要對這個用戶履歷表,其具有的ID和他們有效日期的歷史要加入,以尋找匹配(空日,是指電流):
USER STARTDATE ENDDATE
----------------------------
bobr 2/20/2006 4/18/2010
bobr2 4/19/2010 9/7/2010
bobr 9/8/2010 null
我試圖在SQL Server 2005做的是採取先記錄從第一個表,它循環通過第二表時(如果)EVALDATE在這些日期範圍之一中並且ID匹配,然後將第一個表中的該記錄標記爲有效。
當前代碼從第一個表中獲取記錄,並針對第二個表的所有行運行並針對每個無效evaldate啓動一條記錄,因此它在與第二個表連接時踢出一條記錄,因爲evaldate不是即使記錄無誤,因爲evaldate位於歷史記錄表中第三條記錄的開始日期和結束日期之間。
我希望這是有道理的!在像SAS這樣的東西中,我可以創建一個數組並循環檢查歷史表中的每條記錄。我如何在SQL中執行此操作?我試圖做的只是如果記錄日期無效,用標誌更新第一個表格。有任何想法嗎?謝謝!!!
嗨,我試過這一個,但不能得到它的工作。也許我誤解了代碼的一些東西? – ramos 2010-11-30 18:52:06
這將返回table1中所有在table1中的開始日期和結束日期之間具有evaldate的用戶。如果用戶不在表2中,他們將不會出現。這可能是我誤解了你的問題。當它不起作用時,你收到了什麼信息? – Ramy 2010-11-30 18:57:20
它運行良好,但是當它回來時,我有4條記錄:第一條記錄的歷史記錄中有3條記錄,第一條表中的每條evaldate有一條記錄,然後歷史記錄表中的最後一條記錄與6/7/2010合併從第一張表中記錄。 – ramos 2010-11-30 19:12:41