行号不会在每一行上求值,但是case语句是有效的,因此无论大小写如何,您都被行号所困扰。
尝试以下方法:
ROW_NUMBER() OVER ( ORDER BY CASE WHEN @orderby = 0 AND @orderdir = 1 THEN ne.[time] END DESC, CASE WHEN @orderby = 0 AND @orderdir = 2 THEN ne.[time] END ASC, CASE WHEN @orderby = 1 AND @orderdir = 1 THEN ne.lastedit END DESC, CASE WHEN @orderby = 1 AND @orderdir = 2 THEN ne.lastedit END ASC, CASE WHEN @orderby = 2 AND @orderdir = 1 THEN ne.title END ASC CASE WHEN @orderby = 2 AND @orderdir = 2 THEN ne.title END DESC )



