我在 SQL 数据库中有两个表;'course' 和 'event',课程表有 courseID (pk)、coursecode 和 coursetitle 字段。事件表有 eventID (pk) courseID (fk)、startdate、enddate。
我需要使用事件表的开始日期返回所有课程的列表,其中有一列显示它发生的最后日期,以及它应该发生的下一个日期。
我可以在事件表中获取最近日期或特定课程的下一个日期,如下所示:
SELECT TOP 1
startdate as nextdate
FROM event
WHERE
CONVERT(VARCHAR(8),startdate,112) > CONVERT(VARCHAR(8), GETDATE(), 112)
AND coursecode = 'acc01'
ORDER BY startdate ASC
我希望结果如下所示:
+------------+-------------+------------+-------------+------------+-------------+
| coursecode | coursetitle | lastevent | lasteventid | nextevent | nexteventid |
+------------+-------------+------------+-------------+------------+-------------+
| acc01 | Access | 2012-09-30 | 20127 | 2013-12-10 | 35612 |
| wrd37 | Word | 2013-11-02 | 34816 | NULL | NULL |
+------------+-------------+------------+-------------+------------+-------------+
我需要显示每个课程代码一次(课程来自不同的供应商,因此课程代码可能不是唯一的字段,因此是 courseid 字段)。课程可能没有过去的日期、未来的日期或任何日期。Null 在这些日期/eventid 字段中很好,因为我将在报告设计中格式化它们。
我希望我没有重复一个问题,但到目前为止我还没有在这里找到任何东西。
预先感谢大家的任何帮助