我正在尝试查询以显示学生的出勤记录.这些是我的表.

这是我到目前为止开始的......
我正在将studentId(StudentCalendar)列表与学校开放日期(DateCollection)匹配,然后记录错过的天数(出勤率).
我最终得到这样的东西..
SELECT s.personid,
dc.calendarid,
dc.[date],
coalesce(absentMinutes,0) AS absentMinutes
FROM [dbo].[StudentCalendar] s
INNER JOIN [dbo].[DateCollection] dc ON s.calendarId = dc.calendarId
LEFT JOIN [dbo].[Attendance] a ON a.dateOccurred = dc.[date]
AND a.personId = s.personId
Run Code Online (Sandbox Code Playgroud)

我现在有一份学生名单,每天都有学校开放.我的问题是并非每个学生都注册了整个学年.
有没有办法让我只能将学生列表(StudentCalendar)与学校开放日期(DateCollection)匹配,当它在每个学生的学生日历startDate和endDate(日历)中给出的范围内?
像这样的东西..

这应该适合你:
SELECT s.personid,
dc.calendarid,
dc.[date],
coalesce(absentMinutes,0) AS absentMinutes
FROM [dbo].[StudentCalendar] s
INNER JOIN [dbo].[DateCollection] dc ON s.calendarId = dc.calendarId
INNER JOIN [dbo].[Attendance] a ON a.dateOccurred = dc.[date]
AND a.personId = s.personId
AND dc.[date] BETWEEN s.startDate AND isnull(s.endDate,'99991231')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |