有出勤表,如:
| ATID | STID | ATDATE | PRESENT |
..........................................................
| 1 | 25 | 6/8/2012 | true |
| 2 | 25 | 7/8/2012 | true |
| 3 | 25 | 15/8/2012 | true |
| 4 | 25 | 19/8/2012 | false |
| 5 | 25 | 25/8/2012 | true |
数据如上表所示,但我需要这样:
| STID | ATDATE | PRESENT |
..........................................................
| null | 1/8/2012 | null |
| null | 2/8/2012 | null |
..
..
| 25 | 6/8/2012 | true |
| 25 | 7/8/2012 | true |
..
..
| null | 30/8/2012 | null |
| 25 | 31/8/2012 | true |
记录少于几个月的天数,但我需要的记录取决于每月的天数,显示在表格中的记录和其他记录应该是虚拟的。
答案 0 :(得分:2)
您需要创建一个日历表,其中包含每个相关日期的条目,并使用该条目加入您的考勤表。
SELECT CalDate,STID,ATDATE,PRESENT
FROM Calendar
LEFT JOIN Attendances
ON Calendar.CalDate=Attendance.ATDATE
这只是日历表的众多用途之一。