I take it your tables are being joined within one data source? If there is no way that you can change the data at the source or create a new view in the database which corrects the CampaignID and connect to that instead, then one possibility is to write some custom SQL in the data source connection.
Replace [Campaignid] in the custom SQL with something like
WHEN 'D' THEN 'A'
WHEN 'E' THEN 'B'
This may have an adverse effect of slowing down your viz as the query isn't optimised any more. If this happens try working from a Tableau Data Extract instead of a live connection.
Unfortunately, I cannot make changes at the source/DB level.
I just have about 10 values that need to be mapped and I would want to keep the control at frontend level in case they change. I created a calculated field to have the Case statement with the mapping as suggested above and used that field to join the tables and it works well.
Thanks again! Appreciate the help!