BookmarkSubscribeRSS Feed
scb
Obsidian | Level 7 scb
Obsidian | Level 7

I expect the test dataset obtain the below result; instead it got message of variables not found in the contributing table.  Anyone can help? Thanks.

 

Test Dataset

BRAND       MODEL

Acura         MDX

 

PROC SQL;
select MAKE, MODEL
into :BRAND, :MOD
from SASHELP.CARS WHERE MAKE EQ 'Acura' and MODEL EQ 'MDX';

 

PROC SQL;
CREATE TABLE TEST AS SELECT DISTINCT
&BRAND AS BRAND, &MOD AS MODEL FROM SASHELP.CARS;
QUIT;

 

 

2 REPLIES 2
Kurt_Bremser
Super User

After resolution of the macro variables, your second SQL will look like this:

PROC SQL;
CREATE TABLE TEST AS SELECT DISTINCT
Acura AS BRAND, MDX AS MODEL FROM SASHELP.CARS;
QUIT;

See? There are no variables Acura or MDX in sashelp.cars.

Maybe you are looking for a where condition?

 

PS stop shouting at your computer. The SAS interpreter can read lowercase perfectly well, and it's more readable for humans.

gamotte
Rhodochrosite | Level 12

In addition to @Kurt_Bremser's answer, there is no need to use intermediary macrovariables

 

proc sql;
    CREATE TABLE TEST AS
    SELECT MAKE AS BRAND, MODEL AS MOD
    FROM sashelp.cars
    WHERE strip(upcase(MAKE))='ACURA' AND strip(upcase(MODEL))='MDX';
quit;

hackathon24-white-horiz.png

The 2025 SAS Hackathon has begun!

It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.

Latest Updates

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 1163 views
  • 0 likes
  • 3 in conversation