En TransacSQL, il n'est pas possible d'utiliser une variable pour définir la colonne à trier. Nous allons donc lister les différents cas possibles en utilisant le 'CASE'. Voici un exemple qui fonctionne avec la base Northwind :
Declare @idp as varchar(100)
select @idp = '2'
select * from Customers
order by Case When @idp = 1 Then CustomerID
When @idp = 2 Then ContactName End