我需要按订单号选择最近的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列在一起。
这适用于不需要选择前100条记录的其他查询 - 当然,如果我先对OrderTypeName进行排序,它会停止选择最近的100条记录。
我该怎么做?我尝试过搜索Google,但我甚至都不知道该搜索什么。 (我试过 - '选择前n'然后以结果为例 - 没有欢乐)。
感谢。
答案 0 :(得分:3)
您可以使用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
答案 1 :(得分:3)
将查询放入子查询中,然后添加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