Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

DESC et ASC en tant que paramètre dans une procédure stockée

Le numéro de ligne n'est pas évalué sur chaque ligne, mais les instructions de cas le sont, vous êtes donc bloqué avec le numéro de ligne, quel que soit le cas.

Essayez ceci à la place :

            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
                )