Не изменяйте ASC
или DESC
, меняйте знак сортируемой вещи:
SELECT * FROM table
ORDER BY
CASE WHEN @Direction = 1 THEN -id else id END asc;
ОП спрашивает:
Ребята, я не эксперт по SQL, пожалуйста, объясните мне, что означает id и -id, он контролирует направление заказа?
id - это столбец, по которому вы сортируете; -id это просто отрицание этого, id * -1. Если вы сортируете по нескольким столбцам, вам нужно будет отменить каждый столбец:
SELECT * FROM table
ORDER BY
CASE WHEN @Direction = 1 THEN -id else id END
CASE WHEN @Direction = 1 THEN -othercolumn else othercolumn END ;
Если вы упорядочиваете по нечисловому столбцу, вам нужно найти выражение, которое делает этот столбец "отрицательным"; написание функции для этого может помочь.