Its a LASR Table, but the real root of the data are from a DBMS. By the way. With regards to your Maxim 3. I want to take jus the last quarter if that quarter occurs more then once in a type. How can I achieve that?
So something converts the DBMS data to a LASR table. This is the process that needs to be looked at.
Do you have a direct connection to the DBMS via SAS/ACCESS, or do you read an unload from the DB into SAS?
To retrieve the last entry for a quarter, sort by type, quarter and an optional item (e.g. date), then do
data compressed / view=compressed;
set have;
by type quarter;
if last.quarter;
run;
Since the view will be executed while the data is processed, it won't eat unnecessary disk space.
data have; infile datalines truncover; input type $ quarter :yymmn6. phase $; format quarter yymmn6.; datalines; K-11 202001 1 K-11 202101 2 K-11 202003 K-12 202101 3 K-12 202102 K-12 202002 1 K-13 202002 2 K-13 202103 3 K-13 202104 2 ; proc transpose data=have out=want ; by type; var phase; id quarter; idlabel quarter; run;
You must have data like this :
K-11 202001 1 K-11 202101 2
K-11 202101 22 K-11 202003 K-12 202101 3 K-12 202102 K-12 202002 1 K-13 202002 2 K-13 202103 3 K-13 202104 2
You need figure out what output you want to see for this data.
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
Check out this tutorial series to learn how to build your own steps in SAS Studio.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.