Estoy tratando de ordenar por múltiples columnas en SQL y en diferentes direcciones. column1se ordenarían descendiendo y column2ascendiendo.
¿Cómo puedo hacer esto?
Estoy tratando de ordenar por múltiples columnas en SQL y en diferentes direcciones. column1se ordenarían descendiendo y column2ascendiendo.
¿Cómo puedo hacer esto?
Respuestas:
ORDER BY column1 DESC, column2
Esto ordena todo column1primero (descendente) y luego column2(ascendente, que es el valor predeterminado) siempre que los column1campos para dos o más filas sean iguales.
column1primero y luego column2cada vez que los column1campos para dos filas son iguales.
column2y luego realiza una clasificación ESTABLE por column1. Esto es más claro para las personas que saben qué es la clasificación estable.
Las otras respuestas carecen de un ejemplo concreto, así que aquí va:
Dada la siguiente tabla de personas :
FirstName | LastName | YearOfBirth
----------------------------------------
Thomas | Alva Edison | 1847
Benjamin | Franklin | 1706
Thomas | More | 1478
Thomas | Jefferson | 1826
Si ejecuta la consulta a continuación:
SELECT * FROM People ORDER BY FirstName DESC, YearOfBirth ASC
El conjunto de resultados se verá así:
FirstName | LastName | YearOfBirth
----------------------------------------
Thomas | More | 1478
Thomas | Jefferson | 1826
Thomas | Alva Edison | 1847
Benjamin | Franklin | 1706
1.Firstname asc, Lastname desc, yearOfBirst asc and 2.Firstname asc, Lastname desc, yearOfBirst desc ¿Hay alguna forma de superar esto?
FirstName, LastNameentradas duplicadas con distintivoYearOfBirth
El orden de múltiples columnas depende de los valores correspondientes de ambas columnas: Aquí está mi ejemplo de tabla donde hay dos columnas nombradas con Alfabetos y Números y los valores en estas dos columnas son órdenes asc y desc .
Ahora realizo Ordenar por en estas dos columnas ejecutando el siguiente comando:
Ahora nuevamente inserto nuevos valores en estas dos columnas, donde el valor del Alfabeto en orden ASC :
y las columnas en la tabla de Ejemplo se ven así. Ahora nuevamente realice la misma operación:
Puede ver que los valores en la primera columna están en orden desc pero la segunda columna no está en orden ASC.
(g, 10),(g,12). Luego, ejecute su consulta de orden por orden, obtendrá la segunda columna como ASCorden (eso significag-10,g-11,g-12)
Puede usar múltiples pedidos en múltiples condiciones,
ORDER BY
(CASE
WHEN @AlphabetBy = 2 THEN [Drug Name]
END) ASC,
CASE
WHEN @TopBy = 1 THEN [Rx Count]
WHEN @TopBy = 2 THEN [Cost]
WHEN @TopBy = 3 THEN [Revenue]
END DESC