Hi,
Some tips first. Use the code window - in post a message its the {i} button above - this retains spacing and such like. Code formatting is also very important. Your code is very hard to read - mixed casings, line breaks all over, no indetation, and there is a whole lot of macro variables/code in there. You also haven't provided any test data (in the form of a datastep) which would give us something to run code on. I have made a best guess below, this is based on the fact that I personally don't really use proc tabulate, and prefer to do summaries using other methods:
data have;
input col1 $ year res;
cat=substr(col1,1,1);
datalines;
A1 2014 1
A1 2014 5
A1 2015 2
A1 2016 8
A2 2014 10
A2 2014 3
A2 2015 4
;
run;
proc sql;
create table WANT as
select distinct
CAT,
COL1,
(select sum(RES) from HAVE where CAT=A.CAT and COL1=A.COL1 and YEAR=2014) as YEAR2014,
(select sum(RES) from HAVE where CAT=A.CAT and COL1=A.COL1 and YEAR=2015) as YEAR2015,
(select sum(RES) from HAVE where CAT=A.CAT and COL1=A.COL1 and YEAR=2016) as YEAR2016,
(select sum(RES) from HAVE where CAT=A.CAT and COL1=A.COl1) as TOTAL,
(select sum(RES) from HAVE where CAT=A.CAT) as TOTAL_CAT
from HAVE A;
quit; proc report data=want...; run;
As you will see, you will need another variable whichever way you go to identify which grouping of data to sum.
... View more