我如何获得最近的2条记录

时间:2010-06-05 12:09:37

标签: sql sql-server greatest-n-per-group

我有一个类似于下面示例的表格。我希望能够为每个帐户选择最近的两个托管。我正在使用Microsoft SQL 2000。 感谢您提供的任何帮助。

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

4 个答案:

答案 0 :(得分: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 :(得分:1)

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

答案 2 :(得分:0)

如下:

select * from Account a
where OrderID in
  (select top 2 OrderID from Account
   where AccountNo = a.AccountNo
   order by DateOfOrder desc)

答案 3 :(得分:0)

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

如果没有,我认为最好的解决方案是在表格中添加一个InsertDate字段。

您可以在插入当前日期时自动更新该字段。

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