You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何保留SAS两张表的共同列插入数据以避免程序异常?

解决方案:仅保留两表共同列执行插入操作

原代码的问题在于直接取了SI.SIA的所有列,当SI.SIA新增LOT.SIN不存在的列时,插入操作会因列不匹配报错。要解决这个问题,只需在获取列名时筛选出两张表的共同列即可。

修改后的代码

proc sql noprint;
    select nliteral(name) into :varlist separated by ','
    from dictionary.columns
    where libname="SI" and memname="SIA"
    /* 新增条件:仅保留LOT.SIN也存在的列 */
    and name in (
        select name 
        from dictionary.columns 
        where libname="LOT" and memname="SIN"
    );

    insert into LOT.SIN (&varlist., DateImport) 
    select &varlist., Date() as DateImport
    from SI.SIA;
quit;

关键说明

  • 通过子查询从dictionary.columns中获取LOT.SIN的所有列名,再和SI.SIA的列名取交集,确保varlist只包含两张表都有的列。
  • nliteral()函数会给包含特殊字符的列名添加引号,避免语法错误。
  • 保留原代码中DateImport列的逻辑,因为它是LOT.SIN特有的附加列,不受共同列筛选影响。

内容的提问来源于stack exchange,提问作者nadal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 09:39:52