PROC SQL; CREATE TABLE Test1 AS SELECT DISTINCT ID, AA, CASE WHEN A_IND = 1 AND AA = 1 THEN 'A' END AS MODEL1, CASE WHEN B_IND = 1 AND AA = 1 THEN 'B' END AS MODEL2, CASE WHEN C_IND = 1 AND AA = 1 THEN 'C' END AS MODEL3, CASE WHEN D_IND = 1 AND AA = 1 THEN 'D' END AS MODEL4 FROM Test; quit; DATA Test2; SET Test1; COMBO=CATX(',', OF MODEL:); MOD_NUM=COUNT(COMBO,',')+1; RUN; PROC SQL; CREATE TABLE Test3 AS SELECT DISTINCT COMBO, MOD_NUM, COUNT(*) AS AA_COUNT FROM Test2 WHERE (COMBO NE ' ' AND MOD_NUM GE 2) GROUP BY 1, 2 ORDER BY 3 DESC; QUIT;