I think this will do it; performance will depend on the indexes available on the table:
select sales.*
from (
select distinct TerritoryID
from [Sales].[SalesOrderHeader]
) AS terrs
inner join
(select top 3
TerritoryID,
salesPersonID,
sum(TotalDue) as salesTotal
from [Sales].[SalesOrderHeader]
where
TerritoryID = terrs.TerritoryID and
SalesPersonID is not null
group by TerritoryID, SalesPersonID
order by sum(TotalDue) DESC
) AS sales on
sales.TerrorityID = terrs.TerritoryID
SQL DBA,SQL Server MVP(07, 08, 09) A socialist is someone who will give you the shirt off *someone else's* back.