row_number で変数 order by を使用しようとしています。各ケースに asc または desc なしで定義された単一の列がある場合に機能します。しかし、複数の列を定義したり、asc または desc を使用したりすると機能しません。
これは機能します:
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
しかし、私はこれをしたい:
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