[英]MS Access Query Multiple Groups and Criteria Greatest-N Per-Group
好的,伙計們,我在這件事上處於極限。 我有一個查詢,它引用一個單獨的實際出勤表查詢(qryEventDates)和一個計划的出勤表(出勤計划)。 到目前為止,查詢一直進行到學生(EventID)具有多個時間表(時間表生效日期)為止。 我輸入了一個標准,以將輸出限制為僅包含出勤日期(EventDate)的時間表,但是一旦學生有多個時間表,它就會顯示新舊時間表。 (請參閱圖像鏈接)。
我基本上是想讓它僅顯示應該在當天針對每個學生進行的出勤時間表。 我已經嘗試了許多查詢(熱門查詢等)和其他方法,但這是我到目前為止最接近的方法。 請參閱下面的MS Access 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是最終用戶而不是數據庫程序員。
讓我知道是否需要更多信息。 任何幫助表示贊賞。 非常感謝。
EventID是學生ID? [計划生效日期]和[事件日期]有什么區別? 我建議用語言解釋您要解決的問題……也許其他數據庫設計會有所幫助。
我正在推斷,但是這樣會有所幫助:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.