The Tabulate procedure reads a single data set and displays a summary of its contents. Where tables are to be joined and statistics derived, it is usual to use the SQL Procedure with syntax such as you have shown, or a data step using Merge.
The resultant data set is then used as an input to the data reporting step, in this case, Tabulate.
if your problem is the large space your data need when joined/merged, remember that data step merges and sql joins can be views.
Then as tabulate (reading the view) runs, the tables are merged into tabulate not disk.
Of course you may have other reasons for wanting tabulate to read more than one table. If so we may be able to help, but it is difficult to understand why until you explain more fully.
a good answer needs more information :
data order of each table
any indexes available
size of each table (number of rows)
relative sizes of tables to memory available
relative sizes of acctnum subsets to whole table
why use right(outer) join instead of inner join?
also worth considering is whether there is more use for this join, in addition to this query (sharing "pain" makes it more bear-able)
really, your best option is to hire the time of a good consultant ;-)