sql >> Database >  >> RDS >> Sqlserver

Dynamische volgorde richting

Je zou twee bijna identieke ORDER BY . kunnen hebben items, één ASC en één DESC , en verleng uw CASE statement om ervoor te zorgen dat een van beide altijd gelijk is aan een enkele waarde:

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. Log alle zoekopdrachten in mysql

  2. wat is @JoinColumn en hoe wordt het gebruikt in Hibernate

  3. MySQL trigger/procedure uitvoering vertraging

  4. Vrije plaatsen vinden in een boekingssysteem