Никогда не делай что-то подобное. Полученный план запроса должен удовлетворять обоим условиям, поскольку план является общим и не привязан к конкретному значению времени выполнения @variables. Такой план упустит много возможных оптимизаций. Вы должны явно разделить запросы:
@sortType
if @sortType == id
SELECT
*
FROM
table
ORDER BY
table.Id
else if @sortType == date
SELECT
*
FROM
table
ORDER BY
table.Date
Это та же проблема, что и при попытке реализовать условия динамического поиска . Синтаксический сахар использования CASE в ORDER BY на самом деле является блокировщиком оптимизации запросов.