Как отсортировать по столбцу данные, при этом чтобы имя столбца было взято из другого столбца?

Для того чтобы отсортировать данные в SQL по столбцу, имя которого нужно взять из другого столбца, можно использовать динамическое формирование SQL-запроса с помощью конкатенации строк.

В предположении, что у вас есть таблица my_table с двумя столбцами: column_name и value, где column_name содержит имена столбцов по которым нужно отсортировать данные, и value содержит сами данные, можно сделать следующий SQL-запрос:

SELECT value
FROM my_table
ORDER BY 
  CASE 
    WHEN column_name = 'column1' THEN column1 
    WHEN column_name = 'column2' THEN column2 
    WHEN column_name = 'column3' THEN column3 
    -- ...
    ELSE NULL 
  END;

В этом запросе мы используем выражение CASE, чтобы определить значение столбца, по которому нужно сортировать данные, и затем указываем это значение в ORDER BY. Значение столбца берется из других столбцов таблицы.

В случае, если у вас есть несколько возможных значений столбца column_name, вы можете добавить дополнительные условия в выражение CASE, чтобы обработать их все.

Пожалуйста, обратите внимание, что необходимо заменить 'column1', 'column2', ... значением реальных имен столбцов, которые у вас есть в таблице. Также стоит учесть, что при использовании динамического формирования запроса с помощью конкатенации строк, возможно появление уязвимостей безопасности, если данные, используемые для формирования запроса, поступают от пользователя. Поэтому рекомендуется применять меры безопасности, такие как подготовленные выражения или параметризованные запросы, для предотвращения SQL-инъекций.