我有一個大型的電子郵件發送數據集和狀態代碼。獲取最新的行,按列分組
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