sql >> Database >  >> RDS >> Sqlserver

DESC en ASC als parameter in opgeslagen procedure

Rijnummer wordt niet op elke rij geëvalueerd, maar case-statements zijn zo dat je vastzit aan het rownum, wat het geval ook is.

Probeer in plaats daarvan dit:

            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
                )


  1. Hoe te groeperen in SQL op grootste datum (Order By a Group By)

  2. SQL Update en vervang substring

  3. De servertijdzonewaarde 'AEST' wordt niet herkend of vertegenwoordigt meer dan één tijdzone

  4. Groepeer rijen als ze overlappende tijdsintervallen hebben