Когато правите динамично сортиране, препоръчвам да използвате отделно клаузи:
order by (case when in_sort_column = 'col1' then col1 end),
(case when in_sort_column = 'col2' then col2 end),
(case when in_sort_column = 'col3' then col3 end)
Това гарантира, че няма да имате неочакван проблем с преобразуването на типа, ако колоните са от различни типове. Обърнете внимание на този case
върне NULL
без else
клауза.