Estou tentando classificar por várias colunas no SQL e em direções diferentes. column1
seria ordenado descendente e column2
ascendente.
Como posso fazer isso?
Estou tentando classificar por várias colunas no SQL e em direções diferentes. column1
seria ordenado descendente e column2
ascendente.
Como posso fazer isso?
Respostas:
ORDER BY column1 DESC, column2
Isso classifica tudo por column1
(decrescente) primeiro e depois por column2
(crescente, que é o padrão) sempre que os column1
campos para duas ou mais linhas forem iguais.
column1
primeiro e depois column2
sempre que os column1
campos de duas linhas forem iguais.
column2
e executa a classificação STABLE por column1
. Isso fica mais claro para as pessoas que sabem o que é uma classificação estável.
As outras respostas não têm um exemplo concreto, então aqui vai:
Dada a seguinte tabela Pessoas :
FirstName | LastName | YearOfBirth
----------------------------------------
Thomas | Alva Edison | 1847
Benjamin | Franklin | 1706
Thomas | More | 1478
Thomas | Jefferson | 1826
Se você executar a consulta abaixo:
SELECT * FROM People ORDER BY FirstName DESC, YearOfBirth ASC
O conjunto de resultados ficará assim:
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
Existe alguma maneira de superar isso?
FirstName, LastName
entradas com distintaYearOfBirth
A ordenação de várias colunas depende dos valores correspondentes de ambas as colunas: Aqui está o meu exemplo de tabela, onde estão duas colunas nomeadas com alfabetos e números e os valores nessas duas colunas são ordens asc e desc .
Agora eu executo Order By nessas duas colunas executando o comando abaixo:
Agora, novamente, insiro novos valores nessas duas colunas, onde o valor do alfabeto na ordem ASC :
e as colunas na tabela Exemplo ficam assim. Agora, novamente, execute a mesma operação:
Você pode ver que os valores na primeira coluna estão na ordem desc, mas a segunda coluna não está na ordem ASC.
(g, 10),(g,12)
. Em seguida, execute sua consulta por ordem e você obtém a segunda coluna como ASC
ordem (isso significag-10,g-11,g-12)
Você pode usar pedidos múltiplos em várias condições,
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