Ordenamientos en SQL Server – Order by

En muchas ocasiones se requiere listar los registros en un determinado orden, para esto se debe utilizar de manera correcta la cláusula Order by de Select, se recomienda el uso de índices en los campos por los cuales se va a ordenar. (Ver Indices)

Ordenamientos

  • La Cláusula Order By, debe ir al final de la instrucción.
  • Se puede usar el nombre de campo, el alías o el número de orden del campo
  • Se puede usar Desc y Asc (por defecto), se puede ordenar por varios campos
  • Es posible usar un campo de la tabla que no aparece en la lista de campos como el campo de ordenamiento.
  • Se sugiere mostrar los registros en las aplicaciones en controles que permitan el ordenamiento y no usar la cláusula order by para extraerlos ordenados de la base de datos.

Ejemplos

Usando Northwind
use Northwind
go

Listar los empleados ordenados por Apellidos
select * from Employees order by LastName
go

Listar los clientes (Customers) ordenados por nombre
select C.CustomerID As ‘Cód. Cliente’, C.CompanyName As ‘Cliente’ from Customers As C order by C.CompanyName
go

Listar los productos ordenados por Id. de Categoria y luego por Precio unitario.
select P.ProductID As ‘Código’, P.ProductName As ‘Descripción’, P.CategoryID As ‘Cód. Categoria’,
P.UnitPrice As ‘Precio’ from Products As P
order by CategoryID desc, precio asc
go

Listar los empleados ordenados por fecha de ingreso en orden descendente
select E.EmployeeID, E.LastName, E.FirstName,
Format(E.HireDate,’dd/MM/yyy’) As ‘Fecha de Ingreso’
from Employees As E order by E.HireDate desc
go
— Note el uso de Format en la fecha de ingreso (HireDate)

Ordenar los productos de las categorias 3,5 y 8 que tienen stock primero por categoria en orden ascendente y el stock en orden descendente.
Select P.ProductID As ‘Código’, P.ProductName As ‘Descripción’,
Format(P.UnitPrice, ‘###,##0.00’) As ‘Precio’,
P.UnitsInStock As ‘Stock’, P.CategoryID As ‘Cód. Categoría’ from Products As P
where P.CategoryID in (3,5,8) and P.UnitsInStock >0
order by P.CategoryID asc, P.UnitsInStock desc
go

Importante
Para el ordenamiento se puede usar el nombre de campo, el alias o el número de orden de aparición del campo después de Order By

Listado de los proveedores (Suppliers) ordenados por país y por Nombre de compañía
Usando el nombre de campo
select S.SupplierID As ‘Código’, S.CompanyName As ‘Empresa’, S.Country As ‘País’
from Suppliers as S order by S.Country, S.CompanyName
go
Usando el alias del campo
select S.SupplierID As ‘Código’, S.CompanyName As ‘Empresa’, S.Country As ‘País’
from Suppliers as S order by País, Empresa
go
Usando el orden de aparición del campo
select S.SupplierID As ‘Código’, S.CompanyName As ‘Empresa’, S.Country As ‘País’
from Suppliers as S order by 3, 2
go