Estoy tratando de ordenar por múltiples columnas en SQL y en diferentes direcciones. column1
se ordenarían descendiendo y column2
ascendiendo.
¿Cómo puedo hacer esto?
Estoy tratando de ordenar por múltiples columnas en SQL y en diferentes direcciones. column1
se ordenarían descendiendo y column2
ascendiendo.
¿Cómo puedo hacer esto?
Respuestas:
ORDER BY column1 DESC, column2
Esto ordena todo column1
primero (descendente) y luego column2
(ascendente, que es el valor predeterminado) siempre que los column1
campos para dos o más filas sean iguales.
column1
primero y luego column2
cada vez que los column1
campos para dos filas son iguales.
column2
y 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, LastName
entradas 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 ASC
orden (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