SQL orderby / case case: ошибка направления заказа - PullRequest
0 голосов
/ 25 апреля 2010

Я получил хранимую процедуру, которая доставляет таблицу учеников, и ее нужно упорядочить по фамилии, имени и т. Д., А также сортировать по возрастанию, убыванию, в зависимости от параметра @orderby ...

код:

ORDER BY
CASE 
 WHEN @orderby = 'studentkey' THEN Studentkey END ASC,
CASE 
 WHEN @orderby = 'studentkey' and @desc = 1 THEN Studentkey END DESC,
CASE
 WHEN @orderby = 'initials' THEN Initials END ASC,
CASE
 WHEN @orderby = 'initials' and @desc = 1 THEN Initials END DESC,
CASE
 WHEN @orderby = 'firstname' THEN Firstname END ASC,
CASE
 WHEN @orderby = 'firstname' and @desc = 1 THEN Firstname END DESC,
CASE
 WHEN @orderby = 'nickname' THEN Nickname END ASC,
CASE
 WHEN @orderby = 'nickname' and @desc = 1 THEN Nickname END DESC, 
CASE
 WHEN @orderby = 'insertion' THEN Insertion END ASC,
CASE
 WHEN @orderby = 'insertion' and @desc = 1 THEN Insertion END DESC,
CASE
 WHEN @orderby = 'surname' THEN Surname END ASC,
CASE
 WHEN @orderby = 'surname' and @desc = 1 THEN Surname END DESC
NED

Есть разница в выводе между @desc = 1 и @desc = 0, но не то, что я хочу ...

У кого-нибудь есть решение?

1 Ответ

1 голос
/ 25 апреля 2010

Попробуйте это:

CASE 
 WHEN @orderby = 'studentkey' and @desc = 0 THEN Studentkey END ASC,
CASE 
 WHEN @orderby = 'studentkey' and @desc = 1 THEN Studentkey END DESC,
...
...