在单个 CASE WHEN 语句 SQL 服务器中同时按 ASC 和 DESC 排序

Order by both ASC and DESC at a time in single CASE WHEN statement SQL Server

我有一个名为 BlogsPostForDefault 的存储过程:

CREATE PROCEDURE [dbo].[BlogsPostForDefault]                    
    @RowID int,                  
    @SORTBY nvarchar(50)                    
AS                    
BEGIN                    
    DECLARE @PageSize INT = 10                   
    DECLARE @PostIds TABLE(RowID INT, PostID INT, TotalViews INT)

    INSERT INTO @postIds (RowId, PostID, totalViews)                  
        SELECT 
            ROW_NUMBER() OVER(ORDER BY CASE @sortBy WHEN 'date' THEN CP.PostDate END DESC, <-- **adding one more DESC CP.SortOrder here, HOW?**                   
CASE WHEN @sortBy = 'views' THEN IsNull(MAVC.ViewCount,CP.TotalViews) END DESC), 
            CP.PostID, 
            ISNULL(MAVC.ViewCount, CP.TotalViews) AS TotalViews
        FROM 
            CS_Posts CP (NOLOCK)                    
        INNER JOIN 
            cs_Threads CT (NOLOCK) ON CP.ThreadID = CT.ThreadID
        LEFT OUTER JOIN 
            PostViewCount MAVC (NOLOCK) ON CP.PostID = MAVC.PostID
        WHERE 
            CP.SectionID = 94                    
            AND CP.isapproved = 1                    
            AND cp.PostDate <= GETDATE()                    
            AND CP.PostLevel = 1 

    SELECT 
        T.RowId, T.PostID, T.TotalViews,
        prd.FinalThumbnailImage AS Thumbnail, CP.Subject,
        SUBSTRING(CP.Body,0,1000) as Body,
        DATENAME(mm, CP.PostDate)+ ' ' + CONVERT( varchar(2),datepart (dd, CP.PostDate)) + ', '+ CONVERT( varchar(4),datepart(year, CP.PostDate)) as PostDate, 
        ISNULL(NULLIF(prd.ALT, ''), 
        CP.Subject) AS ALT                    
    FROM 
        @postIds T                     
    INNER JOIN 
        CS_Posts CP (NOLOCK) ON T.PostID = CP.PostID
    LEFT OUTER JOIN 
        Mercola_PostRelatedData prd (NOLOCK) ON T.PostID = prd.PostID
    WHERE 
        T.RowID > @RowID AND T.RowID <= @RowID + @PageSize                  
    ORDER BY
        T.RowID   
END

当我用

执行上面的存储过程时
Exec [BlogsPostForDefault] 13000, 'date' 

我希望它按 CP.PostDate DESCCP.SortOrder DESC

排序

我试图添加这个但是 returns 一个错误。

当前输出:

预期输出:

我该怎么办,求助..!!

尝试在相同条件下将第二个订单添加为第二个案例:

ORDER BY CASE @sortBy WHEN 'date' THEN CP.PostDate END DESC,
    CASE @sortBy WHEN 'date' THEN CP.SortOrder END DESC,
    CASE @sortBy WHEN 'views' THEN IsNull(MAVC.ViewCount,CP.TotalViews) END 

http://sqlfiddle.com/#!6/1b0ad/7/0