Выходные данные сортируются по введенному вами входному значению, то есть по строковому значению, которое фактически не сортируется вообще, поскольку все строки получают одинаковое значение.
Вам потребуется case
для сортировки по различным столбцам:
order by case col_sort
when 'col1' then col1
when 'col2' then col2
when 'col3' then col3
end
Это, конечно, требует, чтобы все столбцы были одного типа данных. Если у вас разные типы данных, вам нужен один case
для каждого типа данных.
Другой альтернативой может быть создание SQL путем объединения строк, а затем выполнение этого.