【发布时间】:2021-10-23 15:04:09
【问题描述】:
假设我有两个表 - 学生和学生出勤表。 Student 表显示有关学生的基本信息:
| Student# | FirstName | LastName |
|---|---|---|
| 201710 | John | Smith |
| 201711 | John | Doe |
| 201712 | Anna | Sy |
| 201713 | Chris | Dy |
虽然学生出勤表显示学生上课的时间进出时间:
| Student# | Date | TimeIn | TimeOut |
|---|---|---|---|
| 201710 | 2016-01-06 | 00:09:00.000 | 00:15:00.000 |
| 201711 | 2016-01-06 | 00:09:10.000 | 00:15:00.000 |
| 201712 | 2016-01-06 | 00:09:05.000 | 00:15:00.000 |
| 201713 | 2016-01-06 | 00:09:00.000 | 00:15:00.000 |
| 201710 | 2016-01-07 | 00:09:00.000 | 00:15:00.000 |
| 201711 | 2016-01-07 | 00:09:10.000 | 00:15:00.000 |
| 201712 | 2016-01-07 | 00:09:05.000 | 00:15:00.000 |
| 201710 | 2016-01-08 | 00:09:00.000 | 00:15:00.000 |
| 201712 | 2016-01-08 | 00:09:10.000 | 00:15:00.000 |
| 201713 | 2016-01-08 | 00:09:05.000 | 00:15:00.000 |
我的目标是还包括当天没有日志的学生的学生编号,我将使用它来确定他们是否缺席。
| Student# | Date | TimeIn | TimeOut |
|---|---|---|---|
| 201710 | 2016-01-06 | 00:09:00.000 | 00:15:00.000 |
| 201711 | 2016-01-06 | 00:09:10.000 | 00:15:00.000 |
| 201712 | 2016-01-06 | 00:09:05.000 | 00:15:00.000 |
| 201713 | 2016-01-06 | 00:09:00.000 | 00:15:00.000 |
| 201710 | 2016-01-07 | 00:09:00.000 | 00:15:00.000 |
| 201711 | 2016-01-07 | 00:09:10.000 | 00:15:00.000 |
| 201712 | 2016-01-07 | 00:09:05.000 | 00:15:00.000 |
| 201713 | NULL | NULL | NULL |
| 201710 | 2016-01-08 | 00:09:00.000 | 00:15:00.000 |
| 201711 | NULL | NULL | NULL |
| 201712 | 2016-01-08 | 00:09:10.000 | 00:15:00.000 |
| 201713 | 2016-01-08 | 00:09:05.000 | 00:15:00.000 |
感谢您的帮助!
【问题讨论】:
-
使用日历表,
CROSS JOIN到你的Student表,然后LEFT JOIN到你的Attendance表。 -
请向我们展示您的尝试
标签: sql sql-server date tsql datetime