内部クエリの 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 件の結果を取得する必要があるためです。
これは私が得るエラーです:
TOPまたはFOR XMLも指定されていない限り、ビュー、インライン関数、派生テーブル、サブクエリ、および共通テーブル式では、ORDER BY句は無効です。
私は何を間違っていますか?
このクエリを修正して、クエリの最初の部分で注文されたアイテムを取得することはできますか?