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;
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and save with the early bird rate—just $795!
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.
Ready to level-up your skills? Choose your own adventure.