well even with a sql proc, using just outer joins, getting the missing products would be hard...not knowing the data tables, I think something like this would work:
select * from products left join sales left join regions
...but now you don't know which region, and Crystal will only let you use the data row once.
are the regions fixed? If they are you might try using a Command object to retrieve products/region and then joining that on regions...lots of data reads.
Boy, wouldn't a stored proc be easier....if only you could.
HTH