I can't think of a means to do this readily within Crystal, however if your dba isn't helpful, an alternative is to use MS Access, link (not import) each of the tables within it, and then create a Query and do the UNION within that.
Then use the MS Access query as your data source for the report.
An alternative within Crystal would be to group by whatever it is that you need, then create a subreport to the other data source within the subreport and return the values that the crosstab is to produce using shared variables, in essence you are creating a crosstab by hand.
So if a subreport is in the group footer you might have a formula something like :
whileprintingrecords;
shared numbervar MyValue := sum({table.value},{table.group})
Then in the main group footer you can call the values, as in:
whileprintingrecords;
shared numbervar MyValue
And of course add it to values in the main report.
-k