sql - SQL 中的列变量数组

标签 sql arrays variables sas

是否可以在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/

相关文章:

sql - 在 postgres 中,如何执行仅返回两个多对多关系重叠的结果的查询?

javascript - 给定多个对象键获取数组对象元素的索引

php - 如何将数组值转换为变量?

C++ "Variable not declared in this scope"- 再次

python - 如何删除 numpy 数组中相邻的重复值?

r - 2 个样本之间的 Kullback-Leibler 距离

mysql - 在 MySQL 中执行 FULL OUTER JOIN 查询时出错

MySQL 求和列并显示列中的最后一行

sql - 允许安全执行任意sql所需的权限

ios - 键入任何对象?不符合 'StringLiteralConvertible'