Saat melakukan pengurutan dinamis, saya sarankan menggunakan separate klausa:
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)
Ini menjamin bahwa Anda tidak akan mengalami masalah yang tidak terduga dengan konversi tipe, jika kolom memiliki tipe yang berbeda. Perhatikan bahwa case kembalikan NULL tanpa else klausa.