Я знаю, что это старый пост, но это для любого, кто сталкивается с этой проблемой и ищет решение:
SELECT ROW_NUMBER() OVER (ORDER BY
CASE @OrderBy
WHEN 'Supplier' THEN Supplier
END
CASE @OrderBy
WHEN 'ShipNo' THEN ShipNo
END
)
В основном вы помещаете каждое поле в отдельный регистр. Делайте это только в том случае, если их тип данных или значение внутри поля различаются для обоих столбцов или если вы получаете сообщение об ошибке, например
преобразование не удалось при попытке преобразовать int в varchar или varchar в int ..