Select 前 n 个按 feld1 排序,然后按 field2 重新排序

Select top n order by fleld1, then re-order by field2

我需要select按订单号查询最近的100条记录(共返回100条记录):

select top 100 orderNo, orderDate, orderTypeName, field1, field2, name, address
from orders
where dispatched = 1
order by orderNo desc

(orderNo是连续的,最大的就是最新的订单)

这让我得到了最近的 100 个订单。但我希望将最近的 100 个订单按 OrderTypeName 排序,以便将每个 OrderTypeName 列在一起。

这适用于不需要 select 前 100 条记录的其他查询 - 但当然在这里,如果我首先对 OrderTypeName 进行排序,它会停止 select 最近的 100 条记录。

我该怎么做?我试过搜索 Google 但我什至不知道要搜索什么。 (我试过 - 'select top n' 然后求助于结果 - 不开心)。

谢谢。

您可以使用 Row_Number 并按照以下方式进行排序:

Select * from (
 Select orderNo, orderDate, orderTypeName, field1, field2, [name], [address],
    RowN=Row_Number() over (order by OrderNo desc)
 from orders
 where dispatched = 1
) a
Where a.RowN <= 100
order by OrderTypeName 

将查询放在子查询中,然后添加 ORDER BY orderTypeName:

SELECT *
FROM (
    SELECT TOP(100)
        orderNo, orderDate, orderTypeName, field1, field2, name, address
    FROM orders
    WHERE dispatched = 1
    ORDER BY oderNo DESC
) t
ORDER BY orderTypeName, orderNo