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

如何在SAS的SQL穿透查询代码中添加where语句

报错原因

合并代码时出现报错主要有两个核心问题:

  • 透传给ODBC数据源执行的SQL需要符合对应数据库的语法规范,不能直接套用SAS数据步的双引号包裹日期的写法
  • SAS中单引号会阻止宏变量解析,如果直接把带宏变量的日期放到单引号中,会导致宏变量无法正常替换,最终传递给数据库的SQL存在语法错误

合并后可运行代码

%let yyyy_mm_dd = 2021-09-30;
proc sql;
      connect to odbc(noprompt="driver=&driver;database=&database ;Server=&server;Trusted_Authentication=yes"
           user=&user password="&pass!");
      create table snapshot.snapshot_&year_quarter as
           select * from connection to odbc
           (select *
                 from RRS.FactActiveLoanRiskRatingSnapShotData
                 where CoreAsofDate = %str(')&yyyy_mm_dd%str(')
            );
      disconnect from odbc;
quit;

额外说明

  • 如果使用SQL Server等支持标准日期字面量的数据库,也可以直接写where CoreAsofDate = date '&yyyy_mm_dd'
  • 如果使用Oracle等需要显式日期转换的数据库,把WHERE条件调整为where CoreAsofDate = to_date('&yyyy_mm_dd','yyyy-mm-dd')即可
  • 合并后直接在数据源侧完成过滤,不需要后续额外执行数据步过滤,数据传输量更小,运行效率比原代码更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:36:00