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;