2014-10-06 31 views
-1

日期我基本上都在MS Access的表中有學生註冊記錄是這樣的:訂購登記記錄由每個學生

學生證,入學時間,招生代碼
12345,2014年8月25日, E01
12345,2014年9月5日,WD02
12345,2014年10月3日,E01
23456,2014年8月25日,E01
34567,2014年8月25日,E01
34567,10/01/2014,WD03

以上基本上是指學生12345在8/25註冊,退出9/5,並重新註冊在10/3;學生23456註冊於8月25日,現仍在招生;學生34567在8/25入學,退出10/1,並且仍然被撤回。

我需要檢查這些記錄的順序,並確保我們沒有兩個登記記錄而沒有退出其他類似的邏輯錯誤,因爲這顯然沒有意義。

這是問題:我無法弄清楚我的生活如何在Access中對這些記錄進行排名!這是我想和落得什麼:

學生證,入學時間,招生代碼,排名
12345,2014年8月25日,E01,1
12345,2014年9月5日,WD02 ,2
12345,2014年10月3日,E01,3
23456,2014年8月25日,E01,1
34567,2014年8月25日,E01,1
34567,2014年10月1日,WD03,2

所以排名應該重新開始在每個學生。通過這種方式,我可以檢查每個具有奇數等級的記錄是E01(因爲這是唯一有效的輸入代碼),並且每個偶數就像「WD *」等等。現在並不難因爲截至10月份,我們沒有那麼多的動作,但是隨着kiddos開始轉移並進出,開始需要數小時才能看看是否需要查看每個有多條記錄的學生(我是什麼正在做)。

任何幫助將不勝感激。最終的目標是在一個宏中實現自動化,這樣它就可以每週分發任何瘋狂的記錄,我們只需修復並繼續前進,而無需審查每個移動的孩子。

回答

0

試試這個:您可能需要更改字段名稱/表名稱。

SELECT s.StudentID, s.EnrollmentDate, s.enrollmentcode, 

(
SELECT Count(*) 
FROM students AS t 
WHERE t.enrollmentdate < students.enrollmentdate 
AND s.studentid = t.studentid 
)+1 AS Test 

FROM students AS s 
ORDER BY s.StudentID, s.EnrollmentDate; 

我們基本上只使用登記日期爲手段,以訂購的記錄,以幫助我們打造出來的行數。 (我認爲任何人在報名前都不能退出。)