Calculated is not working in character variable alias.
proc sql;
select name as name1,
calculated (substr(name1,1,2)) as test
from sashelp.class;
quit;
Works fine for me:
proc sql;
select upcase(NAME) as NAME1
,substr(calculated NAME1,1,2) as NAME2
from SASHELP.CLASS;
quit;
NAME1 | NAME2 |
---|---|
ALFRED | AL |
ALICE | AL |
BARBARA | BA |
CAROL | CA |
HENRY | HE |
JAMES | JA |
Works fine for me:
proc sql;
select upcase(NAME) as NAME1
,substr(calculated NAME1,1,2) as NAME2
from SASHELP.CLASS;
quit;
NAME1 | NAME2 |
---|---|
ALFRED | AL |
ALICE | AL |
BARBARA | BA |
CAROL | CA |
HENRY | HE |
JAMES | JA |
Calculated is not a function, so your syntax:
calculated (<some code>)
is invalid, it should read:
calculated <calculated variable name>
And then any further code should appear outside that statement.
This point is however moot as the code:
proc sql;
select name as name1,
substr(name,1,2) as test
from sashelp.class;
quit;
Is in fact all you need, the calculated just adds more processing onto the whole thing so is a waste.
name1 is not a calculated variable within the proc sql syntax. It is an alias you set to an already existing variable from the data file.
Calculated makes sens when you refer to a variable that it is generated in the proc sql.
Consider the following as an example:
proc sql;
select name as name1,
substr(name1,1,2) as test,
length(calculated test) as test1
from sashelp.class;
quit;
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.