Un query dinamico te serviria?
Por ejemplo tienes en tu tabla los tipos de datos y quieres que si es int entonces te ordene por el campo nombre
Código SQL:
Ver originalDECLARE @dato VARCHAR(200)
DECLARE @query VARCHAR(MAX)
DECLARE @orderby VARCHAR(200)
SELECT @dato=tipo_dato FROM tabla
IF @dato='int'
SET @orderby='campo1'
ELSE
SET @orderby='campo2'
SET @query='select datos from tabla where dato=dato order by ' + @orderby
EXEC Sp_sqlExec @query
Saludos!