They are sorted, they're just sorted as strings which is what the column is by the point the order by is evaluated. Perhaps something like this:
Select CAST(CAST(BaseColumn*100 AS numeric(10,2)) AS varchar(5)) + '%' as MyColumn FROM
(
SELECT 0.10 as BaseColumn
Union
SELECT 0.011 as BaseColumn
Union
SELECT 0.02 as BaseColumn
Union
SELECT 0.12 as BaseColumn
) MyTable
Order by BaseColumn asc
Gail Shaw
Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability