W przypadku rozwiązania MySQL możesz użyć UNION
aby ustawić nazwy wszystkich kolumn w zapytaniu o zerowym wierszu, a następnie zapytać o coś bardziej złożonego:
SELECT null AS a, null AS b, null AS c FROM dual WHERE false
UNION ALL
SELECT <expr>, <expr>, <expr>
FROM <realtable>...
Tylko pierwszy termin zapytania UNION definiuje nazwy kolumn całego zapytania. Nazwy kolumn (lub ich brak) w kolejnych terminach zapytania nie wpływają na ostateczne nazwy kolumn.
Musisz znać numer kolumn, ale oddzielenie dwóch terminów zapytania powinno być dość łatwe. O ile wiem, działa zarówno w Oracle, jak i MySQL (jednak testowałem to tylko w MySQL, a nie w Oracle).