You might want to only show the missing row when there are missing values. Here is one way to accomplish that by recoding blank SMOKING to "Missing"
data adsl;
length smoking $8;
do id = 1 to 20;
smoking = chooseC(rantbl(4,.5,.5,.1),'Y','N','Missing');
output;
end;
run;
proc print;
run;
proc format;
value $YN(notsorted default=8)
'Y'='Yes'
'N'='No'
;
quit;
proc summary data=adsl nway completetypes missing;
class smoking / preloadfmt order=data;
output out=want / levels;
format smoking $YN.;
run;
proc print;
run;