Microsoft SQL Server
ORDEN POR
Buscar..
Observaciones
El propósito de la cláusula ORDER BY es ordenar los datos devueltos por una consulta.
Es importante tener en cuenta que el orden de las filas devueltas por una consulta no está definido a menos que haya una cláusula ORDER BY.
Consulte la documentación de MSDN para obtener todos los detalles de la cláusula ORDER BY: https://msdn.microsoft.com/en-us/library/ms188385.aspx
Cláusula ORDER BY simple
Usando la tabla de empleados , a continuación se muestra un ejemplo para devolver las columnas Id, FName y LName en orden LName (ascendente):
SELECT Id, FName, LName FROM Employees
ORDER BY LName
Devoluciones:
Carné de identidad | FName | LName |
---|---|---|
2 | Juan | Johnson |
1 | James | Herrero |
4 | Johnathon | Herrero |
3 | Miguel | Williams |
Para ordenar en orden descendente, agregue la palabra clave DESC después del parámetro de campo, por ejemplo, la misma consulta en orden descendente de LName es:
SELECT Id, FName, LName FROM Employees
ORDER BY LName DESC
ORDENAR por campos múltiples
Se pueden especificar varios campos para la cláusula ORDER BY
, en orden ASCending o DESCending.
Por ejemplo, al usar la tabla http://stackoverflow.com/documentation/sql/280/example-databases/1207/item-sales-table#t=201607211314066434211 , podemos devolver una consulta que se ordena por SaleDate en orden ascendente y Cantidad en orden descendente.
SELECT ItemId, SaleDate, Quantity
FROM [Item Sales]
ORDER BY SaleDate ASC, Quantity DESC
Tenga en cuenta que la palabra clave ASC
es opcional, y los resultados se clasifican en orden ascendente de un campo determinado de forma predeterminada.
ORDENAR con lógica compleja
Si queremos ordenar los datos de manera diferente por grupo, podemos agregar una sintaxis de CASE
a ORDER BY
. En este ejemplo, queremos ordenar a los empleados del Departamento 1 por apellido y a los empleados del Departamento 2 por salario.
Carné de identidad | FName | LName | Número de teléfono | ManagerId | DepartmentId | Salario | Fecha de contratación |
---|---|---|---|---|---|---|---|
1 | James | Herrero | 1234567890 | NULO | 1 | 1000 | 01-01-2002 |
2 | Juan | Johnson | 2468101214 | 1 | 1 | 400 | 23-03-2005 |
3 | Miguel | Williams | 1357911131 | 1 | 2 | 600 | 12-05-2009 |
4 | Johnathon | Herrero | 1212121212 | 2 | 1 | 500 | 24-07-2016 |
5 | Sam | sajón | 1372141312 | 2 | 2 | 400 | 25-03-2015 |
The following query will provide the required results:
SELECT Id, FName, LName, Salary FROM Employees
ORDER BY Case When DepartmentId = 1 then LName else Salary end
Pedidos personalizados
Si desea ordenar por una columna utilizando algo distinto al orden alfabético / numérico, puede usar case
y case
para especificar el orden que desea.
order by Group
devoluciones de order by Group
:
Grupo | Contar |
---|---|
No jubilado | 6 |
Retirado | 4 |
Total | 10 |
order by case group when 'Total' then 1 when 'Retired' then 2 else 3 end
devuelve:
Grupo | Contar |
---|---|
Total | 10 |
Retirado | 4 |
No jubilado | 6 |