SQLUSA

Microsoft SQL Server 2005 Best Practices

How to architect dynamic ORDER BY?

 

Execute the following script in Query Editor to sort the data set four ways based on three and default criteria:


USE AdventureWorks
GO
SELECT
ContactID,
FirstName,
LastName,
Title=isnull(Title,'')
FROM
Person.Contact
WHERE LEFT(FirstName,1)='M'
ORDER BY
CASE
WHEN LEFT(LastName,1)='A' THEN RANK() OVER (ORDER BY FirstName+LastName)
WHEN LEFT(LastName,1)='M' THEN RANK() OVER (ORDER BY LastName+', '+ FirstName, Title)
WHEN LEFT(LastName,1)='U' THEN RANK() OVER (ORDER BY LastName+', '+ FirstName DESC)
ELSE RANK() OVER (ORDER BY LastName DESC, FirstName DESC)
END

GO


 

SQLUSA - The Best SQL Training in the World
 
 
SQLUSA.com Home Page