0

この内部選択で UserId による順序付けを行う必要があります (したがって、この最後の WHERE 句が考慮される前に) が、エラーが発生するため

ORDER BY 句は、ビュー、インライン関数では無効です...

私はそのようにすることはできません。現在のように、UserId と JobId による DENSE_RANK() で注文できる他の方法はありますか?

UserId の値のほとんどは NULL であり、JobId で Dense_ranked の場合、これらの JobId を並べ替えて、最初に UserId != NULL になるようにする必要があります。

SELECT *, @RecordCount as RecordCount
FROM
(
    SELECT JobId, UserId, DENSE_RANK() OVER(ORDER BY JobId) AS Rnk
    FROM #ListOfJobs
) t
WHERE Rnk between (@pn - 1) * @ps + 1 and @pn * @ps 
4

3 に答える 3

0

Dense_rank を取得するために CTE を使用し、派生した結果セットで UserId で並べ替えることについてはどうですか。

;WITH cte AS (

    SELECT JobId, UserId, DENSE_RANK() OVER(ORDER BY JobId) AS Rnk
    FROM #ListOfJobs
    WHERE Rnk between (@pn - 1) * @ps + 1 and @pn * @ps 
)
SELECT * FROM cte
ORDER BY UserId DESC, Rnk 
于 2014-08-13T12:19:18.510 に答える