Can someone help me to convert the below join code to proc transpose? Whether it is efficient if we do so?
Currently I end up with I/O error due to many to many records after joins.
proc sql;
Create table tst as
SELECT DISTINCT LEVEL_A,LEVEL_B,PT_NAME,BU, COM_CATG,CATG, PLN_TO, POSTNG_YR FROM WORK.FINAL_SUB t1
LEFT JOIN ( SELECT BU, CATG, PLN_TO, NEW_GSV, NEW_TRADE
FROM WORK.FINAL_SUB WHERE POSTNG_PED="1" ) per1
ON t1.BU=per1.BU AND t1.CATG=per1.CATG
AND t1.PLN_TO=per1.PLN_TO
LEFT JOIN ( SELECT BU, CATG, PLN_TO, NEW_GSV, NEW_TRADE
FROM WORK.FINAL_SUB WHERE POSTNG_PED="2" ) per2
ON t1.BU=per2.BU AND t1.CATG=per2.CATG
AND t1.PLN_TO=per2.PLN_TO
LEFT JOIN ( SELECT BU, CATG, PLN_TO, NEW_GSV, NEW_TRADE
FROM WORK.FINAL_SUB WHERE POSTNG_PED="3" ) per3
ON t1.BU=per3.BU AND t1.CATG=per3.CATG
AND t1.PLN_TO=per3.PLN_TO
LEFT JOIN ( SELECT BU, CATG, PLN_TO, NEW_GSV, NEW_TRADE
FROM WORK.FINAL_SUB WHERE POSTNG_PED="4" ) per4
ON t1.BU=per4.BU AND t1.CATG=per4.CATG
AND t1.PLN_TO=per4.PLN_TO
LEFT JOIN ( SELECT BU, CATG, PLN_TO, NEW_GSV, NEW_TRADE
FROM WORK.FINAL_SUB WHERE POSTNG_PED="5" ) per5
ON t1.BU=per5.BU AND t1.CATG=per5.CATG
AND t1.PLN_TO=per5.PLN_TO
LEFT JOIN ( SELECT BU, CATG, PLN_TO, NEW_GSV, NEW_TRADE
FROM WORK.FINAL_SUB WHERE POSTNG_PED="6" ) per6
ON t1.BU=per6.BU AND t1.CATG=per6.CATG
AND t1.PLN_TO=per6.PLN_TO
LEFT JOIN ( SELECT BU, CATG, PLN_TO, NEW_GSV, NEW_TRADE
FROM WORK.FINAL_SUB WHERE POSTNG_PED="7" ) per7
ON t1.BU=per7.BU AND t1.CATG=per7.CATG
AND t1.PLN_TO=per7.PLN_TO
LEFT JOIN ( SELECT BU, CATG, PLN_TO, NEW_GSV, NEW_TRADE
FROM WORK.FINAL_SUB WHERE POSTNG_PED="8" ) per8
ON t1.BU=per8.BU AND t1.CATG=per8.CATG
AND t1.PLN_TO=per8.PLN_TO
LEFT JOIN ( SELECT BU, CATG, PLN_TO, NEW_GSV, NEW_TRADE
FROM WORK.FINAL_SUB WHERE POSTNG_PED="9" ) per9
ON t1.BU=per9.BU AND t1.CATG=per9.CATG
AND t1.PLN_TO=per9.PLN_TO
LEFT JOIN ( SELECT BU, CATG, PLN_TO, NEW_GSV, NEW_TRADE
FROM WORK.FINAL_SUB WHERE POSTNG_PED="10" ) per10
ON t1.BU=per10.BU AND t1.CATG=per10.CATG
AND t1.PLN_TO=per10.PLN_TO
LEFT JOIN ( SELECT BU, CATG, PLN_TO, NEW_GSV, NEW_TRADE
FROM WORK.FINAL_SUB WHERE POSTNG_PED="11" ) per11
ON t1.BU=per11.BU AND t1.CATG=per11.CATG
AND t1.PLN_TO=per11.PLN_TO
LEFT JOIN ( SELECT BU, CATG, PLN_TO, NEW_GSV, NEW_TRADE
FROM WORK.FINAL_SUB WHERE POSTNG_PED="12" ) per12
ON t1.BU=per12.BU AND t1.CATG=per12.CATG
AND t1.PLN_TO=per12.PLN_TO
LEFT JOIN ( SELECT BU, CATG, PLN_TO, TEMP_GSV, TEMP_KMF
FROM WORK.FINAL_SUB WHERE POSTNG_PED="&cperiod" ) submitted
ON t1.BU=submitted.BU AND t1.CATG=submitted.CATG
AND t1.PLN_TO=submitted.PLN_TO
;
quit;
... View more