BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
markc
Obsidian | Level 7

Hello,

 

I am trying to read a numeric variable from a table using PROC SQL but I want the variable which it falls into to be a character variable containing the various formats depending on its value.

 

proc format;
          value price_bands
          .                  =         "$0-$5,000"
          0-5000             =         "$0-$5,000"
          5001-10000         =         "$5,001-$10,000"
run;

 

proc sql;
 create table demo_test as
  select a.*,
    b.price as price_band format=$price_bands. 
  from table1 as a
  left join table2 as b
   on a.key= b.key
quit;

 

 

Problem is, I am getting this error:

ERROR: Numeric expression requires a numeric format.

Any help will be greatly appreciated and Liked.

 

Kind regards,

Mark

1 ACCEPTED SOLUTION

Accepted Solutions
Tom
Super User Tom
Super User

Remove the extra $ in the format name in the FORMAT= option of your SQL code. 

 

You defined a numeric format, but in your SQL code you asked for a character format with a similar name.  PROC SQL is complaining because the variable you are trying to attach the format to is numeric, not character.  If you attempt to attach a format of the wrong type in a FORMAT statement of a DATA step SAS will auto-correct to using a similarly named format of the appropriate type for the variable.  But in a PROC SQL SELECT statement it causes a hard error.

 

 

View solution in original post

1 REPLY 1
Tom
Super User Tom
Super User

Remove the extra $ in the format name in the FORMAT= option of your SQL code. 

 

You defined a numeric format, but in your SQL code you asked for a character format with a similar name.  PROC SQL is complaining because the variable you are trying to attach the format to is numeric, not character.  If you attempt to attach a format of the wrong type in a FORMAT statement of a DATA step SAS will auto-correct to using a similarly named format of the appropriate type for the variable.  But in a PROC SQL SELECT statement it causes a hard error.

 

 

sas-innovate-2024.png

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.

 

Register now!

SAS Enterprise Guide vs. SAS Studio

What’s the difference between SAS Enterprise Guide and SAS Studio? How are they similar? Just ask SAS’ Danny Modlin.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 1 reply
  • 6711 views
  • 1 like
  • 2 in conversation