Ok, here's one possibility. I'm still not sure that I understand the requirements but I believe this will get the type of output you're looking for. Note that it requires a consistent name for the final output column.
A suggestion. To get the best help, you'll do better posting ddl for the tables you need and sample data to insert. That saves folks time when they're trying to provide help. It also helps clarify what you're looking for. See the article http://www.sqlservercentral.com/articles/Best+Practices/61537/
about best practices for getting help on the forums.
Create Table TableA
PK int primary key clustered,
Insert TableA (PK, AgencyFrom, ValueFrom, AgencyTo, ValueTo)
(223, '', 300, 'Washington', 200),
(230, 'Boston', 400, '', 100)
ValueFrom as Value
AgencyFrom = ''
ValueTo as Value
AgencyTo = ''
Drop table TableA;