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

Hello experts.

 

How can I format the column countt/column in huge length in proc sql.

Normally in Oracle we set declare the column in a new format like below:

col fieldname a10;

col fieldname1 9999999;

 

I have tried  dbsastype=(column='CHAR(10)'))  and didn't work

I have queries:

select count(*) from table this one give me 1.8787E8 

select count(*) from table1 a inner join table2 b on a.col = b.col inner join table3 c on c.col1=b.col2; the result is 1.8787E8

select column1, column2, column3 from table1 a inner join table2 b on a.col = b.col inner join table3 c on c.col1=b.col2;

 

how can I  pull all the scientific number in proc sql?

 

thank you,

Bach-Nga

1 ACCEPTED SOLUTION

Accepted Solutions
ballardw
Super User

The values you show like

select count(*) from table this one give me 1.8787E8 

are numeric so attempting to set a character type is inappropriate

 

You should be able to use

 

select count(*) format f12.

to display 12 digits.

 

 

View solution in original post

5 REPLIES 5
ballardw
Super User

The values you show like

select count(*) from table this one give me 1.8787E8 

are numeric so attempting to set a character type is inappropriate

 

You should be able to use

 

select count(*) format f12.

to display 12 digits.

 

 

pepevo
Calcite | Level 5

thank you for replying, I have tried to set at the beginning and it didn't work earlier.

now I need to set next to the column needed to select.  

what about character length?  Do I need to set the format next to the column too.  I did 'format column n10.; ' it didn't work

 

v/r,

Bach-Nga

Tom
Super User Tom
Super User

SAS only has two data types. Floating point numbers and fixed length character strings.

The default in PROC SQL for numbers is to use BEST8. 

 

You can attach a FORMAT to your variable to help SAS understand how you want the values displayed.

For your simple queries that looks like:

select count(*) format=best32. from table;

If you know the numbers will always be integers then you might use the 32. format (also known as the F32. format).

But you might instead want to use the COMMA format to make it easier for humans to read.

pepevo
Calcite | Level 5

thank you, Mr. 

 

"

col name a25

col address a30

select name, address from users;

"

I did the same in proc sql and it didn't work;

select name format n25., address format n30. from users;

 

thank you,

 

Bach-Nga

 

Tom
Super User Tom
Super User

That doesn't make any sense in SAS syntax. First of all there is no need to attach a format to character variable since SAS already will display the character variable properly.  But if you did want to attach a format you need to use a character format, such as $25.

 

If you want to define the LENGTH of the variable use the LENGTH= option instead. 

 

So if your source database defined NAME with a length of 4000 and you KNOW that you only need the first 25 bytes then you can use the LENGTH= option after the variable name to tell SAS to define the new variable as being only 25 bytes long.

select name length=25 ....
from mydb.mytable

You might need to also set the format as SAS has a nasty habit of attaching formats to character variables pulled from external databases.  It would be strange to have name defined as length 25 but with the $4000. format attached to it.

SAS Innovate 2025: Call for Content

Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 16. Read more here about why you should contribute and what is in it for you!

Submit your idea!

Mastering the WHERE Clause in PROC SQL

SAS' Charu Shankar shares her PROC SQL expertise by showing you how to master the WHERE clause using real winter weather data.

Find more tutorials on the SAS Users YouTube channel.

Discussion stats
  • 5 replies
  • 706 views
  • 0 likes
  • 3 in conversation