DATA Step, Macro, Functions and more

how to switch between data types in Case statement

Reply
Contributor
Posts: 43

how to switch between data types in Case statement

I have a sample proc sql code that wont run.

proc sql;
select
	(CASE 
		WHEN t1.variable = 0 THEN 'No'
		ELSE t1.variable end) as ColumnName
FROM TABLE T1;
quit;

Running this gives me an error of:

"Result of WHEN Clause 2 is not the same data type as the preceding results"

 

 

Is it because the result wants to be an integer?  If so, how do I out put a "NO"?

 

I tried to put a colon between the 0, but get the following:

Expressing using equals (=) has components of different data types
result of when clause 2 is not the same data type as preceding results
Super User
Posts: 5,884

Re: how to switch between data types in Case statement

Correct, you cannot mix chars into numerical variables.

You have some options. Either store the result in a char variable (requires put() on the t1.variable).

Or perhaps can live with using 0 or . (Missing) instead of a NO. (Which a format could fix).

Data never sleeps
Esteemed Advisor
Posts: 5,541

Re: how to switch between data types in Case statement

If you require "No" for display purposes then a format would do a good job:

 

proc format;
value no
0 = "No";
run;

proc sql;
select
    t1.variable as ColumnName format = no.
FROM T1;
quit;
PG
Ask a Question
Discussion stats
  • 2 replies
  • 165 views
  • 2 likes
  • 3 in conversation