我有一个类似于下面示例的表格。我希望能够为每个帐户选择最近的两个托管。我正在使用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
答案 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