Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

DESC und ASC als Parameter in einer gespeicherten Prozedur

Die Zeilennummer wird nicht in jeder Zeile ausgewertet, aber Case-Anweisungen sind so, dass Sie in jedem Fall bei der Zeilennummer hängen bleiben.

Versuchen Sie stattdessen Folgendes:

            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
                )