Hello @paulrutti and welcome to the SAS Support Communities!
The ZEROS option of the WEIGHT statement is often useful in this situation. Does the example below help you?
/* Create sample data for demonstration */
data have;
do category='A', 'B', 'C';
do _iorc_=1 to 9;
_n_+1;
binvar=(_n_<17);
output;
end;
end;
run;
/* Create intermediate dataset including combinations with zero frequencies */
proc freq data=have noprint;
tables category*binvar / sparse out=cnt;
run;
/* Compute confidence intervals for the proportion of BINVAR=1 in each category */
proc freq data=cnt;
by category;
weight count / zeros;
tables binvar / binomial(level='1');
run;