2010-06-05 77 views
0

我有一个类似于下面显示的示例的表。我希望能够为每个账户选择两个最近的信息编号。我正在使用Microsoft SQL 2000. 感谢您提供任何帮助。我如何获得2条最近的记录

AccountNo, DateOfOrder, OrderID 
----------------------------------------- 
123,  March 1 2010,  1 
222,  March 3 2010,  2 
123,  April 1 2010,  3 
345,  March 15 2010, 77 
123,  june 1 2010,  55 
123,  march 5 2010, 33 
345,  march 1 2010, 99 
222,  june 1 2010,  7 
222,  june 2 2010, 22 

回答

3

对于SQL 2000这将工作

SELECT a1.AccountNo, a1.DateOfOrder, a1.OrderID 
FROM Accounts a1 
LEFT OUTER JOIN Accounts a2 
    ON a2.AccountNo = a1.AccountNo AND a1.DateOfOrder < a2.DateOfOrder 
GROUP BY a1.AccountNo, a1.DateOfOrder, a1.OrderID 
HAVING COUNT(*) < 2 
+1

谢谢你。对于服务器类型的错误指导 – fishhead 2010-06-05 12:52:20

0

怎么是这样的:

​​
+0

子改变AccountNo到的OrderID请根据马丁史密斯评论,感谢 – krock 2010-06-05 12:56:24

1

选择最新的一组, 并选择具有小于最新的一组最大日期集。

0

如果字段DateOfOrder是要排序的,那么SELECT TOP 2 * from table .. ORDER BY DateOfOrder

如果不是这样,我认为最好的解决办法是一个InsertDate字段添加到表中。

在插入当前日期时间后,您可以使用触发器自动更新该字段。

然后,只需SELECT TOP 2 * from table .. ORDER BY InsertDate

+0

我认为该请求是顾客。 – Randy 2010-06-05 12:18:57