我在SQL数据库中有两个表; '课程'和'活动',课程表有courseID(pk),coursecode和coursetitle字段。事件表具有eventID(pk)courseID(fk),startdate,enddate。具有最新日期和下一日期的SQL返回列表
我需要使用事件表的startdate返回所有课程的列表,并显示列出发生的最后一个日期和下一个发生的日期。
我可以得到如下的最近日期,或者在事件表中特定课程的下一个日期:
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 |
+------------+-------------+------------+-------------+------------+-------------+
我需要一次显示每个coursecode(课程来自不同的供应商,因此coursecode可能不是一个独特的领域,因此courseid领域)。该课程可能没有过去的日期,未来的日期或任何日期。对于这些日期/ eventid字段,Null没有问题,因为我将在报表设计中对它们进行格式设置。
我希望我不是在重复一个问题,但到目前为止我还没有发现任何问题。
谢谢大家提前任何帮助
什么是sql的味道? – geomagas
@geomagas 2008 R2 SP2 – laurencemadill
多个'coursecode's也会有''coursecode'多个'coursetitle's。标题选择的标准是什么? – geomagas