我的内部查询中的 order by 子句遇到了很大的麻烦。
我使用此查询从数据库中获取分页结果:
;WITH ItemsRank AS
(
select
ROW_NUMBER() OVER(ORDER BY t.CreatedOnDate) AS RowNum,
t.ItemId
from Tickets t
where t.CompanyId = @CompanyId
group by t.ItemId ...
order by t.CreatedOnDate desc -- this makes me trouble
) ,x as (
select ItemsRank.*,
c.CommentText ...
WHERE RowNum > @p_From
AND RowNum <= @p_From + 50
)
select * from x where RowNumComment <= 4
因为查询很大,所以我删除了所有选择、加入、组等。
如果我在查询结束时按顺序排序,它可以工作,但不如预期。
因为查询的第一部分应该按降序获得前 50 个结果。
这是我得到的错误:
ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效,除非还指定了 TOP 或 FOR XML
我究竟做错了什么?
是否可以修复此查询以在查询的第一部分中获取已订购的项目?