more on – ORDER BY with CASE
One of my previous post mentions about using CASE construct with ORDER BY clause to tweak the ordering of the result set. That example was a simple one, this post provides more insight on this tip.
Most of us must have experienced this problem at least once when you want to order some of your records in a specific way. Or your boss or client asks this weird request to see some specific records on top. And you are puzzelled, how to do this.
The following example shows how we can get this:
USE [AdventureWorks] GO --Simple sort by ORDER BY SELECT FirstName, LastName FROM Person.Contact ORDER BY FirstName -- ORDER BY with CASE SELECT FirstName, LastName FROM Person.Contact ORDER BY CASE LastName WHEN 'Wright' THEN '0' WHEN 'Jenkins' THEN '1' WHEN 'Torres' THEN '2' WHEN 'Sanchez' THEN '3' ELSE LastName END -- Multiple column sort with ORDER BY with CASE SELECT FirstName, LastName FROM Person.Contact ORDER BY CASE LastName WHEN 'Wright' THEN '0' WHEN 'Jenkins' THEN '1' WHEN 'Torres' THEN '2' WHEN 'Sanchez' THEN '3' ELSE LastName END, FirstName
Categories: SQL Tips
ORDER BY, ORDER BY CASE
Does it support multiple column sorting such as
Order by CASE WHEN @sort = ‘special’ THEN firstColumn, secondColumn END DESC?