This simplified example may help you
http://sqlfiddle.com/#!6/35ffb/10
Set up some dummy data (this would be replaced by your select statement)
create table x(
id int,
name varchar(3),
country varchar(2)
)
insert into x
values (1,'aaa','uk'),
(2,'aaa','us'),
(3,'baa','uk'),
(4,'caa','uk'),
(5,'baa','it')
Some vars to hold sort field and sort order
declare @so char(1)
declare @sf char(1)
set @so = 'a' -- a = asc d = desc
set @sf = 'n' -- n = name c = country
and a select to return sorted data
SELECT row_number()
OVER (order by
CASE WHEN @so = 'd' THEN sf END desc,
CASE WHEN @so <> 'd' THEN sf end,
id
) AS aa, name,country
FROM (
SELECT x.*, case @sf when 'n' then name when 'c' then country end sf
FROM X
) X