2016-02-04 56 views
0

好吧,夥計們,我在這個事情上處於極限。我有一個查詢是指單獨的實際考勤表查詢(qryEventDates)和計劃的考勤表(考勤計劃)。到目前爲止,查詢一直運行到學生(EventID)有多個時間表(Schedule生效日期)。我輸入了一個標準,將輸出限制在< =到出勤日期(EventDate)的時間表上,但是一旦學生有多個時間表,它就會顯示新時間表和新時間表。 (請參閱圖片鏈接)。MS Access Query Multiple Groups and Criteria Greatest-N Per-Group

Query Result

我基本上是試圖得到它只能說明,應該是積極的那一天每個學生出勤時間表。我已經嘗試了許多查詢(頂部查詢等)和其他方法,但這是迄今爲止最接近的。請參閱下面的MS SQL訪問查詢:

SELECT q.EventID, q.EventDate, s.[Schedule Effective Date], s.SunOC, s.SunDE, s.MonOC, s.MonDE, s.TueOC, s.TueDE, s.WedOC, s.WedDE, s.ThuOC, s.ThuDE, s.FriOC, s.FriDE, s.SatOC, s.SatDE FROM [Attendance Schedule] AS s RIGHT JOIN qryEventDates AS q ON s.Schedule_FK_Student_ID = q.EventID WHERE (((s.[Schedule Effective Date])<=[EventDate])) ORDER BY q.EventID, q.EventDate;

我願意接受改變的設置,如果各地需要幫助的是......這是我試圖找出的最後一件事。請在我身上輕鬆一下,我自學成才,我大多數人都知道Access是最終用戶,而不是數據庫程序員。

讓我知道是否需要更多信息。任何幫助表示讚賞。非常感謝。

回答

0

我做的推論,但將這樣的事情有所幫助:

SELECT q.StudentID, q.EventDate, s.[Schedule Effective Date] 
FROM qryEventDates AS q INNER JOIN [Attendance Schedule] AS s 
ON q.StudentID = s.Student_ID 
WHERE (((s.[Schedule Effective Date])= 
(SELECT MAX([Schedule Effective Date]) FROM [Attendance Schedule] A 
WHERE A.[Student_ID]=s.[Student_ID] AND A.[Schedule Effective Date] <= [EventDate]))) 
ORDER BY q.EventDate 

結果第一個月:

StudentID EventDate Schedule Effective Date 
ST-AAR0000 2016-01-19 2016-01-19 
ST-AAR0000 2016-01-20 2016-01-19 
ST-AAR0000 2016-01-21 2016-01-19 
ST-AAR0000 2016-01-22 2016-01-19 
ST-AAR0000 2016-01-23 2016-01-19 
ST-AAR0000 2016-01-24 2016-01-19 
ST-AAR0000 2016-01-25 2016-01-19 
ST-AAR0000 2016-01-26 2016-01-19 
ST-AAR0000 2016-01-27 2016-01-19 
ST-AAR0000 2016-01-28 2016-01-28 
ST-AAR0000 2016-01-29 2016-01-28 
ST-AAR0000 2016-01-30 2016-01-28 
ST-AAR0000 2016-01-31 2016-01-28 
+0

這就是我需要的到底是什麼。我現在剛剛處於事情的開始階段,但這正是我所需要的一切工作。非常感謝! – Vanessa

0

EventID是StudentID? [計劃生效日期]和[事件日期]有什麼區別? 我建議用文字解釋你想要解決的問題......也許不同的數據庫設計會有所幫助。