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

Odstranění duplikace v dynamickém příkazu ROW_NUMBER() OVER ORDER BY

Jedním ze způsobů, jak to udělat, by bylo definovat alias sloupce na jiné úrovni, abyste na něj mohli odkazovat dvakrát bez opakování výrazu.

( SELECT CASE WHEN @SortBy LIKE 'sloupec1 %' THEN Cast(sloupec1 AS SQL_VARIANT) WHEN @SortBy LIKE 'sloupec2 %' THEN Cast(sloupec2 AS SQL_VARIANT) WHEN @SortBy LIKE 'sloupec3 %' THEN 3ort WAGRIANT SQL(column) LIKE 'column4 %' THEN Cast(sloupec4 AS SQL_VARIANT) END) C(sort_col)

Místo toho bych zvážil použití dynamického SQL. Tento druh dotazu catch all zabije myšlenku získat dobrý plán, který může používat indexy, aby se zabránilo řazení.



  1. SQL Aktualizace nadřazeného pole tabulky na základě více podřízených řádků tabulky

  2. Jak mohu provést fuzzy shodu názvů společností v MYSQL s PHP pro automatické dokončování?

  3. sql server vyberte sloupec podle čísla

  4. Jak vytvořit uloženou proceduru v MySQL pomocí Knex raw