Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Dynamiczny kierunek zamówienia

Możesz mieć dwa prawie identyczne ORDER BY elementy, jeden ASC i jeden DESC i rozszerz swój CASE oświadczenie, aby jeden lub drugi z nich zawsze miał jedną wartość:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Funkcja SQL Row_Number() w klauzuli Where

  2. Podziel wartość jednej kolumny na wartości wielu kolumn

  3. Jak uzyskać listę tabel bez ograniczenia klucza podstawowego we wszystkich bazach danych instancji SQL Server - SQL Server / TSQL Tutorial, część 62

  4. Jak wyświetlić pełną zawartość kolumny tekstowej lub varchar(MAX) w programie SQL Server 2008 Management Studio?

  5. Jak ustawić bieżący język w SQL Server (T-SQL)