sql >> Databáze >  >> RDS >> Sqlserver

Dynamický směr objednávky

Můžete mít dva téměř identické ORDER BY položky, jeden ASC a jeden DESC a rozšiřte svůj CASE příkaz, aby se jeden nebo druhý z nich vždy rovnal jedné hodnotě:

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. Python - mysqlDB, výsledek sqlite jako slovník

  2. Nejlepší postup pro ukládání uživatelských jmen a hesel v databázích MySQL

  3. Naučte se používat příkaz CASE v SQL

  4. připojit AngularJS k mysql pomocí mé služby PHP?