我有一个大型的电子邮件发送数据集和状态代码。获取最新的行,按列分组
ID Recipient Date Status
1 [email protected] 01/01/2010 1
2 [email protected] 02/01/2010 1
3 [email protected] 01/01/2010 1
4 [email protected] 02/01/2010 2
5 [email protected] 03/01/2010 1
6 [email protected] 01/01/2010 1
7 [email protected] 02/01/2010 2
在这个例子中:
- 发送到有人所有邮件都发送到他们
- 中间电子邮件(按日期)的状态有一个状态,但最新的是
- 发送到别人的最后一封电子邮件有
状态我需要找回被发送到每个人的所有电子邮件的数量,以及什么最新状态代码了。
第一部分是相当简单:
SELECT Recipient, Count(*) EmailCount
FROM Messages
GROUP BY Recipient
ORDER BY Recipient
这给了我:
Recipient EmailCount
[email protected] 2
[email protected] 3
[email protected] 2
我怎样才能获得最新的状态代码呢?
最终的结果应该是:
Recipient EmailCount LastStatus
[email protected] 2 1
[email protected] 3 1
[email protected] 2 2
感谢。
(服务器是Microsoft SQL Server 2008中,查询是通过一个OleDbConnection在.NET平台上运行)
是否可以同时收到多个电子邮件?您想如何处理两封电子邮件具有相同日期但状态不同的情况? – 2010-05-18 16:18:28
时间戳实际上是这个足够高的分辨率不会是一个问题,即使是如此,“无论SQL将其ORDER BY回报”是不够好。 – Cylindric 2010-05-18 16:44:27