SAS SQL
A procedure allowing SQL queries to be run on a SAS table.
SAS Dialect of SQL
The SQL procedure works in SQL query language with several enhancements
References
The SQL procedure has access to SAS libraries and tables.
proc sql;
create table LIBREF.NEWTABLE as
select VARLIST
from LIBREF.OLDTABLE;
run;
Functions
SAS functions, such as year(), are available within SQL procedures.
Formats
The select command is extended with SAS formatting.
proc sql;
select Birthdate format=mmddyy10., year(Birthdate) as Birthyear
from LIBREF.TABLE;
run;
Deduplication
The primary method of de-duplicating data in SAS is the SORT procedure. An alternative approach is:
proc sql;
create table LIBREF.NEWTABLE as
select DISTINCT(KEYVAR), VAR2, VAR3
from LIBREF.OLDTABLE
group by KEYVAR
run;
Defining SAS Macros
SAS macros can be set in a SQL procedure. Macro labels must be prefixed with a colon (:) within the procedure.
To store single values into a macro, use the INTO clause.
proc sql noprint;
select VAR1, VAR2
into :V1, :V2
from LIBREF.TABLE;
%put V1=&V1, V2=&V2 - Note the tailing whitespace on V1, and the leading whitespace on V2;
%let V1=&V1;
%let V2=&V2;
%put V1=&V1, V2=&V2 - Note that whitespace has been trimmed;To store aggregated values into a macro, use the INTO ... SEPARATED BY clause.
proc sql;
select cats(OLD_NAME, "=", NEW_NAME)
into :RENAME separated by ' '
from LIBREF.TABLE;