是否可以在sql中创建列变量数组来执行如下操作(请原谅语法):
array(Col1,Col2,Col3);
update tempTable
for(i=1;i<3;i++){
set array[i] =
case missing(array[i])
then 0*1
else
array[i]*1
end
};
注意:我在 SAS 中使用 proc SQL 步骤
所需功能: 对表的多列执行上面的 for 循环中的操作,无需为每列编写单独的 set 语句。
最佳答案
可以使用 SAS 宏来完成您想要的操作。
如果这是本地 SAS 表,则只需使用数据步骤更新它会更容易。
data have;
set have;
array v[3] col1 col2 col3;
do i=1 to 3;
v[i] = sum(v[i],0);
end;
drop i;
run;
sum() 函数对值求和(显然)。如果缺少某个值,则不会添加该值,而是会添加其余值。因此,如果缺失,您将得到 0;如果缺失,您将得到该列的值。
关于sql - SQL 中的列变量数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51865292/