sql >> Databasteknik >  >> RDS >> Sqlserver

Dynamisk orderriktning

Du kan ha två nästan identiska ORDER BY objekt, en ASC och en DESC , och utöka ditt CASE uttalande för att göra en eller annan av dem alltid lika med ett enda värde:

ORDER BY
      CASE WHEN @OrderDirection = 0 THEN 1
      ELSE
           CASE WHEN @OrderByColumn = 'AddedDate' THEN CONVERT(varchar(50), AddedDate)
                WHEN @OrderByColumn = 'Visible' THEN CONVERT(varchar(2), Visible)
                WHEN @OrderByColumn = 'AddedBy' THEN AddedBy
                WHEN @OrderByColumn = 'Title' THEN Title
           END
      END ASC,
      CASE WHEN @OrderDirection = 1 THEN 1
      ELSE
           CASE WHEN @OrderByColumn = 'AddedDate' THEN CONVERT(varchar(50), AddedDate)
                WHEN @OrderByColumn = 'Visible' THEN CONVERT(varchar(2), Visible)
                WHEN @OrderByColumn = 'AddedBy' THEN AddedBy           
                WHEN @OrderByColumn = 'Title' THEN Title
           END
      END DESC


  1. Sök text i fält i varje tabell i en MySQL-databas

  2. SQL Server 2008 R2 till MySQL-migrering

  3. Allvarligt fel:Klass 'Swift_smtpTransport' hittades inte i

  4. mysql-fråga PHP:Jag vill att ett specifikt objekt ska vara först och sedan sortera resten av objekten