Při dynamickém řazení doporučuji použít oddělené klauzule:
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)
To zaručuje, že nebudete mít neočekávaný problém s převodem typů, pokud jsou sloupce různých typů. Všimněte si, že case
vrátí NULL
bez else
doložka.