The TABULATE procedure prints headings only for values that appear in the input data set. If you want to include headings for all possible values, you have two different ways to create such a table:
data test;
input dayofweek $10. @12 sales 5.;
datalines;
monday 10000
tuesday 20000
thursday 15000
friday 12000
;
run;
proc format;
value $weekd (notsorted) 'monday'='Monday'
'tuesday'='Tuesday'
'wednesday'='Wednesday'
'thursday'='Thursday'
'friday'='Friday';
run;
proc tabulate data=test order=data;
class dayofweek /preloadfmt ;
format dayofweek $weekd.;
var sales;
table dayofweek all, sales all / printmiss misstext='0';
run;
data test;
input dayofweek $10. @12 sales 5.;
datalines;
monday 10000
tuesday 20000
thursday 15000
friday 12000
;
run;
data classdata;
input dayofweek $10.;
datalines;
monday
tuesday
wednesday
thursday
friday
;
run;
proc tabulate data=test classdata=classdata exclusive order=data;
class dayofweek;
var sales;
table dayofweek all, sales all / misstext='0';
run;