Apparently, between the crosstabs and UNION, all data is converted to text which can't be summed or averaged. I tried using CInt to convert values back to number but CInt can't handle the nulls and empty strings in field. I can get this much to work:
Select Command, Commander, Inspector, CDbl(Nz(FSL,0)) AS FSLCt, InspCt, Total, FSL0, FSL1, FSL2, FSL3, FSL4
From [Q_Ratio_D1_Avg_Comm_Crosstab]
UNION Select Command, Commander, Inspector, CDbl(Nz(Total_Insp,0)), Blank, Number, FSL0, FSL1, FSL2, FSL3, FSL4
From [Q_Ratio_D1_Avg_Comm_Insp_Crosstab];
Trying to use CDbl and Nz on InspCt, Total, Blank, Number fields causes type mismatch error. Maybe because in the crosstabs InspCt, Blank, Number are calculated as empty string. Why? Use Null and then the CDbl an Nz functions should work on these fields as well.
So glad I don't have need for crosstab queries!