I'm trying to use variable order by in row_number, it works when each case has a single column defined with no asc, or desc. but it doesn't work when I define more than one column or use asc or desc.
this works:
select top(@perpage) *,row_number()
over (order by
case @orderby when 'updated' then date_edited
when 'oldest' then date_added
end
)
as rid from
(select * from ads) a
where rid>=@start and rid<@start+@perpage
but I want to do this:
select top(@perpage) *,row_number()
over (order by
case @orderby when 'updated' then date_edited, user_type desc
when 'oldest' then date_added, user_type desc
when 'newest' then date_added desc, user_type desc
when 'mostexpensive' then price desc, user_type desc
when 'cheapest' then pricedesc, user_type desc
when '' then user_type desc
end
)
as rid from
(select * from ads) a
where rid>=@start and rid<@start+@perpage