fecha ejemplos desc sql sql-server sql-order-by

ejemplos - MS Sql: ORDEN Condicional POR ASC/DESC Pregunta



order by sql server ejemplos (4)

He hecho algo como esto

select productId, InventoryCount, case when @Direction = 1 then InventoryCount else -InventoryCount end as "SortOrder" order by 3

Quiero hacer que el orden de mi consulta sea condicional, de modo que si satisface la condición, debe ordenarse descendiendo

Por ejemplo:

SELECT * FROM Data ORDER BY SortOrder CASE WHEN @Direction = 1 THEN DESC END


No cambie el ASC o el DESC , cambie el signo de lo que se está ordenando:

SELECT * FROM table ORDER BY CASE WHEN @Direction = 1 THEN -id else id END asc;

El OP pregunta:

Chicos, no soy el experto en SQL, por favor, explícame qué significa el id y el id, ¿controla la dirección de pedido?

ID es la columna que esté clasificando; -id es solo la negación de eso, id * -1. Si está ordenando por más de una columna, deberá negar cada columna:

SELECT * FROM table ORDER BY CASE WHEN @Direction = 1 THEN -id else id END CASE WHEN @Direction = 1 THEN -othercolumn else othercolumn END ;

Si está ordenando por una columna no numérica, deberá encontrar una expresión que haga que esa columna sea "negativa"; Escribir una función para hacer eso puede ayudar.


También puedes usar un esquema que soporte todos los tipos de columnas:

SELECT <column_list> FROM <table> ORDER BY CASE WHEN @sort_order = ''ASC'' AND @sort_column = ''<column>'' THEN <column> END ASC, CASE WHEN @sort_order = ''DESC'' AND @sort_column = ''<column>'' THEN <column> END DESC


SELECT * FROM Data ORDER BY Case WHEN @Direction = 1 THEN SortOrder END DESC, Case WHEN 1=1 THEN SortOrder END