Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

DESC e ASC como parâmetro no procedimento armazenado


O número da linha não é avaliado em todas as linhas, no entanto, as instruções case são, então você fica preso ao rownum, não importa qual seja o caso.

Tente isso em vez disso:
            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
                )