入力パラメーターが取得する行の量と並べ替え基準を指定する、並べ替えられた SQL クエリから最初の数行を取得しようとするストアド プロシージャを使用しています。
最初の数行を適切に取得できましたが、結果を並べ替えようとすると、デフォルトの基準 (主キー) を使用して並べ替えられたように見えます。
それで、誰かがそれを見てくれるかどうか疑問に思っていましたか?
USE [database]
GO
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER PROCEDURE [dbo].[x0] 
@username nvarchar(50),
@sortBy varchar(50),
@sortDirection varchar(4),
@startRow int,
@endRow int
AS
With Ordering AS(
    SELECT ROW_NUMBER() OVER (Order by
        CASE    WHEN @sortBy='datecreate' THEN 'datecreate'
                WHEN @sortBy='id' THEN 'id'
                WHEN @sortBy='DisplayName' THEN 'DisplayName'
        END,
        CASE    WHEN @sortDirection='asc' THEN 'asc'
                WHEN @sortDirection='desc' THEN 'desc'
        END) AS RowNumber,
    dbo.x1.*, dbo.x2.* 
    FROM  dbo.x1 INNER JOIN dbo.x2 ON dbo.x1.type = dbo.x2.type
    where username = @username
)
SELECT     RowNumber, *, DisplayName AS DisplayName
FROM         Ordering
Where RowNumber BETWEEN @startRow AND @endRow 
また、並べ替え基準を外側の SQL クエリ (RowNumber BETWEEN @startRow AND @endRow) に移動しようとしましたが、あまりうまくいきませんでした。