Is location #47 special somehow? Will it always be 47? Either way, you can stick it in a variable
declare @HQ geography;
select @HQ = geo from location where locationid = 47;
select
suburb, state, postcode,
geo.STDistance(@HQ)/1000 kms
from location
order by kms desc
If you (for whatever reason) want it all in one query, you could try an outer apply
select
suburb, state, postcode,
geo.STDistance(HQ.geo)/1000 kms
from location
outer apply (select geo from location where locationid = 47) as HQ
order by kms desc