Sql server 2008 按日期排序的订单无法正常工作

Sql server 2008 按日期排序的订单无法正常工作,sql-server-2008,sql-order-by,Sql Server 2008,Sql Order By,我正在使用 Microsoft SQL Server 2008(RTM)-10.0.1600.22(X64)2008年7月9日 14:17:44版权所有(c)1988-2008微软公司企业版 Windows NT 6.1上的版本(64位)(版本7601:Service Pack 1) 当我试图按日期排序时,它没有给出正确的顺序 DECLARE @dd table (ID int,rate numeric(5,2), orderdate smalldatetime) INSERT INTO @dd

我正在使用

Microsoft SQL Server 2008(RTM)-10.0.1600.22(X64)2008年7月9日 14:17:44版权所有(c)1988-2008微软公司企业版 Windows NT 6.1上的版本(64位)(版本7601:Service Pack 1)

当我试图按日期排序时,它没有给出正确的顺序

DECLARE @dd table (ID int,rate numeric(5,2), orderdate smalldatetime)
INSERT INTO @dd
SELECT 1,10,'2013-03-05 10:11:00'
UNION ALL 
SELECT 2,25,'2013-03-05 10:11:00' 
UNION ALL
SELECT 3,30,'2013-03-05 10:10:00'
UNION ALL
SELECT 4,50,'2013-03-05 10:11:00'
UNION ALL
SELECT 5,60,'2013-03-05 10:15:00'

SELECT top 2 * FROM @dd Order by orderdate desc
Id 1,2,4具有相同的
orderdate


它以id 5和2的顺序显示结果,这是不正确的。它实际上应该显示orderid 5,4。

为了响应您的评论,您还需要按
ID
列进行订购:

SELECT top 2 * 
FROM @dd 
Order by orderdate desc, ID desc
结果:

ID  rate    orderdate
5   60.00   2013-03-05 10:15:00
4   50.00   2013-03-05 10:11:00

为了回应您的评论,您还需要按
ID
列进行订购:

SELECT top 2 * 
FROM @dd 
Order by orderdate desc, ID desc
结果:

ID  rate    orderdate
5   60.00   2013-03-05 10:15:00
4   50.00   2013-03-05 10:11:00

不,顺序是正确的。相同值组内的排序未定义。那么我如何获得预期结果呢?我想要基于orderdate排序的结果…如果orderdate相同,则获取上次插入的id..这里4是在1,2之后插入的我在下面发布了一个解决方案…否。顺序是正确的。相同值组内的排序未定义。那么我如何获得预期结果?我想要基于orderdate排序的结果…如果orderdate相同,则获取上次插入的id..这里4是在1,2之后插入的我在下面发布了一个解决方案。。。