BookmarkSubscribeRSS Feed
lloraine
Calcite | Level 5
I have some logic that I am trying to do in SAS but not sure how to do this.

If Component_Product_ID is missing then ICIS_Product_ID else Component_Product_ID. This is the definition (calculation) for a field called Pseudo_Pr_ID.

I have some SQL from another program that uses DECODE:
DECODE(T3."COMPONENT_PRODUCT_ID",NULL,T3."ICIS_PRODUCT_ID" ,T3."COMPONENT_PRODUCT_ID")

Would a CASE statement work? If so, how would the syntax be.
2 REPLIES 2
1162
Calcite | Level 5
I think a CASE statement would work.

proc sql;
select case when Component_Product_ID = . then ICIS_Product_ID else Component_Product_ID end as Pseudo_Pr_ID
from . . .
quit;
deleted_user
Not applicable
the coalesce function might be your answer; it returns the first non-null argument and works in data step and in proc sql:

data coalesce;
input x y;
z = coalesce(x,y);
datalines;
1 2
. 3
4 .
. .
run;

proc sql;
select x, y, coalesce(x,y) as z
from coalesce
;
quit;
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
  • 2152 views
  • 0 likes
  • 3 in conversation