If I truely understand your question, simply use a DECODE statement to differentiate between columns or values to sort on. Just be sure that the options to sort on are of the same type. That is, Column2 and Column3 MUST be of the same datatype. However, Column1 need not be of the same datatype. So here Column1 is a VARCHAR2, but Column2 and Column3 can be numeric.
ORDER BY DECODE(Column1, 'x', Column2, Column3)