Нет, SQL этого не делает, условно возвращая столбцы во время выполнения.
Набор возвращаемых столбцов определяется во время синтаксического анализа и подготовки оператора SQL. Он не может быть динамически изменен во время выполнения.
Чтобы получить результаты, как показано, нам понадобятся два разных запроса
SELECT t.id, t.field1, t.field3
FROM mytable t
WHERE ...
и
SELECT t.id, t.field2, t.field4
FROM mytable t
WHERE ...
Мы можем предоставить псевдонимы для выражений в списке SELECT, но опять же, они должны быть указаны в тексте SQL; они не могут быть изменены во время исполнения.
SELECT t.id, 1 AS field2, 1 AS field4
FROM mytable t
WHERE ...
Но нам все равно потребуется другой текст SQL для возврата field1 и field3.
Похоже, есть 2 ^ 4 (1 + 4 + 6 + 4 + 1) возможных комбинаций поля 1..4, которые могут быть заполнены. Всего 16 возможных списков SELECT.
Мы могли бы выполнить предварительный запрос, чтобы выяснить, какое поле N должно быть возвращено, и использовать результат этого запроса для формулировки текста второго запроса.
Но необходимая для этого ригмарола кажется неоправданной.