在PROC_SQL中使用COALESCE函数截断

时间:2016-03-09 12:48:36

标签: sas proc-sql

我试图在PROC SQL中合并两个数据项并且正在截断。当我在数据集中尝试相同的过程时,我也会被截断,但是以不同的方式。请考虑以下事项:

data test;
var_a = '111111';
var_b = 12345678;
run;

proc sql;
create table test2 as 
select coalesce(input(var_1, 6.), var2) as var3 format = best14.
from test;
quit;

这会生成一个值为111111的数字字段,这不是我想要的。有趣的是,如果我在一个datastep中完成所有操作并修改我的代码如下:

data test;
format var3 best14.
var_a = '111111';
var_b = 12345678;
var3 = coalesce(input(var_1, 6.), var2);
run;

我得到一个包含12345678的数字字段输出。我真正想要的是一个SQL步骤,它将为我提供一个包含11111112345678的数字字段。

有人可以在使用COALESCE功能时告知为什么会发生这种截断吗?

由于

1 个答案:

答案 0 :(得分:2)

我认为你错误地理解了coalesce()函数。 coalesce()会从您的值列表中返回第一个非缺失值,因此在这种情况下“111111”是正确的。

我认为你想要的是cat函数之一,cats()

proc sql;
  create table test2 as 
  select input(cats(var1,var2),14.) as var3 format = best14.
  from test;
quit;

COALESCE> http://support.sas.com/documentation/cdl/en/proc/61895/HTML/default/viewer.htm#a002206368.htm

CATS> http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a002256540.htm