To assure you could remove the other part and the query would work - it acts like a catch all - anything you havent specifically defined above would all be swapped to 'Other' without it you'll just return the original values - depending on the volume of different original values you may find things become difficult to read/ a mess.
You may end up with 200-300+ columns (i dont know your data - just guessing)
Does that help answer your question? and if not, let me know and i'll try and help further.
just thought - not entirely sure it makes a difference but will mention it...
in your query you use the UPPER function on [Property Rate Name] each line - you could create a new field that does that first, then just reference it.
new field = UPPER([Property Rate Name])
IF CONTAINS([new field]),"EXCITE") THEN "Excite Holidays"
ELSEIF CONTAINS([new field]),"AGODA") THEN "Agoda"
In answer to the revised question, why not just filter out null? (i.e put this field in the filter, untick null/other) so just keep all the other values and then null/other wouldnt display.
Thanks Mark, you are right... I should just un-tick it!