I think you can split the column on the basis of "-" and convert it in to three columns and put it after order by clause
for spliting columns
select LEFT(name, CHARINDEX(' ', name + '-') -1),
STUFF(name, 1, Len(Name) +1- CHARINDEX('-',Reverse(name)), '')
from somenames
above query not for your output but this is the example for you .....