I would like to concatenate column names in a way that the first part of the column name is a string and the second part is a number which is the result of another query.
If the number of columns is fixed, then a non-dynamic approach could be:
select
case mytable.mycolumn
when 1 then column1 -- or: when 'a' then columna
when 2 then column2
when ...
else ...
end as my_semi_dynamic_column
from ...