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

Příkaz CASE pro objednávku podle klauzule s více sloupci a seřazením Desc/Asc

Můžete napsat více případů, i když mají všechny stejnou podmínku.

ORDER BY 
    CASE @OrderByColumn WHEN 1 THEN Forename END DESC, 
    CASE @OrderByColumn WHEN 1 THEN Date END, 
    CASE @OrderByColumn WHEN 1 THEN Location END, 
    CASE @OrderByColumn WHEN 2 THEN Surname END ASC 

Ve skutečnosti nezadáte sloupec, podle kterého se má seřadit, ale výraz.

Příkaz case vrátí hodnotu null, pokud podmínka není splněna, takže to ve skutečnosti znamená:

CASE @OrderByColumn WHEN 1 THEN Forename ELSE NULL END

Pokud tedy @OrderByColumn není 1, vrátí příkaz vždy NULL. To ji mimochodem nevylučuje z řazení, ale ve výsledku to spojí všechny tyto řádky dohromady, takže 'Příjmení' je rozhodujícím řazením v rámci této skupiny řádků.



  1. Existuje nějaký legitimní důvod pro použití soketů Unix přes TCP/IP s mysql?

  2. Skupiny zabezpečení DB lze přidružit pouze k instancím VPC DB pomocí verzí rozhraní API

  3. SCD typ 1

  4. Jaké jsou rozdíly mezi datovými typy BLOB a TEXT v MySQL?