Wait... how the hell did you guys turn a topic like this to a debate and personal attacks???
Soldier = On duty to defend/attack for one's country. Either volunteer or "forced" to (depends of the country).
Mercenary = Volunteer, either works for the money or just likes what he/she does.
Assassin = This would have tons of meanings. You kill someone publicly known or in high status = you are called an assassin. But I think you are looking for a more traditional explanation? Assassin as in hitman (no, not the game)? Well, a person who kills ppl for money and/or he/she is ordered to.
I'm sorry if I've missed something, but wouldnt that kinda be it? How in-depth story you want about the differences?