使用Microsoft Sql 2000
我要求能够通过电子邮件发送月度报告,详细说明一些事件。
(我收到了电子邮件的消息)。
我需要通过电子邮件发送的数据包括人们参加过的某些课程的数量。 (到目前为止这么简单,几个内连接和一个Count()和我在那里。)
除此之外,我们运行的一些内部课程有一个到期日期,提示参加课程。通过使用第一部分的sql代码并将结果集粘贴到临时表中,然后通过遍历该表中的每一行,获取用户ID,查询用户课程的注意事项,我能够粗略地获取我需要的数据,在日期排序,以便最早的位于顶部,并且只获得前1名的记录。
这看起来效率很低,所以有什么方法可以修改我当前的查询,以便我也可以获得用户参加的最早课程的日期吗?
即
SELECT uName, COUNT(uId), [ not sure what would go in here] FROM UserDetails
INNER JOIN PassDates
ON PassDates.fkUser = uId)
GROUP BY uName, uId
其中,例如
UserDetails
uId
uName
和
PassDates
fkUser
CourseId
PassDate
希望我已经很好地解释了这一点,有人帮助我。
答案 0 :(得分:0)
回答问题..
SELECT uName, COUNT(uId), MIN(PassDate)
FROM UserDetails
INNER JOIN PassDates ON PassDates.fkUser = uId
GROUP BY uName, uId
如果您有没有任何课程的用户(还)
,您可以将其转为左连接