我试图在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功能时告知为什么会发生这种截断吗?
由于
答案 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