As Rudy has said the design is not optimal. You need to look more closely at what is happening. For instance, when you say f3 has to be shown where f2 is 'COND' what should be displayed when f3 is not 'COND'? Do you really need to store the information if f3 is not 'COND'?
If you are going to have variable number of columns with renaming, this is bad, however, if you view this differently and allow the data to grow in terms of rows rather than columns this will make expanding and reducing the pieces of information that you are gathering easier in the long term.
For instance, let's imagine we need to store information for a client, we could have a table with clientid, attributeType, attributeValue. If there is only 1 piece of information for a client to be stored or 100 pieces of information the design remains the same.