myloveblogs

order by  在排序的时候尽量查询少量的字段和查询长度较小的字段,否则会影响 排序

 

 

               --SELECT  *
    --INTO    ##CTEC
    --FROM    ( SELECT   * ,
    --                        --ROW_NUMBER() OVER ( ORDER BY CASE WHEN INST_DEADLINE IS NULL
    --                        --                                  THEN WS_ID
    --                        --                                  ELSE \'\'
    --                        --                             END DESC ) AS ORDER_NUM 
    --                        --                                 ,
    --                        ROW_NUMBER() OVER ( ORDER BY CASE @sortdirection
    --                                                       WHEN \'ASC\'
    --                                                       THEN CASE @sortby
    --                                                          WHEN \'DEADLINE\'
    --                                                          THEN ISNULL(INST_DEADLINE,
    --                                                          \'3099-1-1\')
    --                                                          END
    --                                                     END ASC, CASE @sortdirection
    --                                                          WHEN \'DESC\'
    --                                                          THEN CASE @sortby
    --                                                          WHEN \'DEADLINE\'
    --                                                          THEN INST_DEADLINE
    --                                                          END
    --                                                          END DESC, CASE @sortdirection
    --                                                          WHEN \'\'
    --                                                          THEN CASE @sortby
    --                                                          WHEN \'\'
    --                                                          THEN INST_DEADLINE
    --                                                          END
    --                                                          END DESC ) AS NUM
    --               FROM     ( SELECT    *
    --                          FROM      ##CTEB
    --                        ) T_CTEB
    --               WHERE    1 = 1
    --                        --AND numid = 1
                       
    --        ) AS T5;  


    DECLARE @orderby VARCHAR(50)= @sortby + \' \' + @sortdirection;

    PRINT @orderby
    SELECT  *
    INTO    ##CTEC
    FROM    ( SELECT    * ,
                        ROW_NUMBER() OVER ( ORDER BY CASE WHEN @orderby = \'DEADLINE DESC\'
                                                          THEN INST_DEADLINE
                                                     END DESC, CASE
                                                              WHEN @orderby = \'DEADLINE ASC\'
                                                              THEN INST_DEADLINE
                                                              END ASC, CASE
                                                              WHEN @orderby = \'ID DESC\'
                                                              THEN ID
                                                              END DESC, CASE
                                                              WHEN @orderby = \'ID ASC\'
                                                              THEN ID
                                                              END ASC, CASE
                                                              WHEN @orderby = \'ADDRESS DESC\'
                                                              THEN ADDRESS
                                                              END DESC, CASE
                                                              WHEN @orderby = \'ADDRESS ASC\'
                                                              THEN ADDRESS
                                                              END ASC , CASE
                                                              WHEN @orderby = \'TITLE DESC\'
                                                              THEN TITLE
                                                              END DESC, CASE
                                                              WHEN @orderby = \'TITLE ASC\'
                                                              THEN TITLE
                                                              END ASC , CASE
                                                              WHEN @orderby = \'CONTENT DESC\'
                                                              THEN CONTENT
                                                              END DESC, CASE
                                                              WHEN @orderby = \'CONTENT ASC\'
                                                              THEN CONTENT
                                                              END ASC , CASE
                                                              WHEN @orderby = \'CREATE_TIME DESC\'
                                                              THEN CREATE_TIME
                                                              END DESC, CASE
                                                              WHEN @orderby = \'CREATE_TIME ASC\'
                                                              THEN CREATE_TIME
                                                              END ASC ) AS RowNum
              FROM      ##CTEB
              WHERE     1 = 1
            ) AS T5;

 

分类:

技术点:

相关文章: