Ao fazer uma classificação dinâmica, recomendo usar separar cláusulas:
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)
Isso garante que você não terá um problema inesperado com a conversão de tipo, se as colunas forem de tipos diferentes. Observe que
case
retornar NULL
sem um else
cláusula.