【发布时间】:2013-01-06 13:10:15
【问题描述】:
我的内部查询中的 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
我做错了什么?
是否可以修复此查询以在查询的第一部分获取已订购的商品?
【问题讨论】:
-
您应该开始将分号放在语句的末尾:sqlserverplanet.com/tsql/…
标签: sql sql-server database tsql stored-procedures