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

PROC SQL语法错误求助:ERROR 22-322与ERROR 76-322

SAS PROC SQL语法错误排查与修复

代码中的问题点:

  • SELECT列表末尾多余逗号:ADT6MoForAS,后面的逗号无效,SQL要求最后一列不能带逗号,这会直接触发语法错误。
  • 错误的子查询逻辑:你想用子查询实现条件取值,但这里完全不需要子查询,改用CASE WHEN表达式更合适。另外SAS中不需要用方括号[t2.EndDate]引用列,直接写列名即可。
  • JOIN后的错误分号:INNER JOIN ... ON (t2.PlayerId = t1.PlayerId);里的分号会提前终止SELECT语句,导致后面的WHERE子句变成独立的无效语句,这是ERROR 76-322的直接原因。
  • 日期计算语法错误:DATE(NOW() - INTERVAL 6 MONTH)是其他SQL方言的写法,SAS中计算6个月前的日期,用INTNX('MONTH', TODAY(), -6)才是正确语法。
  • 日期字面量未转换:直接用'03/20/2022'和日期列比较容易因系统格式设置出问题,建议用INPUT函数转换成标准SAS日期值。

修正后的代码:

PROC SQL;
   CREATE TABLE WORK.QUERY_FOR_VVW_DWH_PTN AS 
   SELECT t1.PlayerId, 
          t1.FirstName, 
          t1.LastName, 
          t1.Email, 
          t2.EndDate, 
          t2.Most_Recent_Overall_Experience, 
          t1.AdtLifetimeRange AS AdtLifetimeRange1,
          CASE WHEN t2.EndDate <= INTNX('MONTH', TODAY(), -6) THEN t1.AdtLifetimeRange END AS ADT6MoBack,
          CASE WHEN t2.EndDate >= INTNX('MONTH', TODAY(), -6) THEN t1.AdtLifetimeRange END AS ADT6MoForAS
      FROM TDQT.vCXSurvey t2
           INNER JOIN TDQT.vCXPlayer_SAS t1 ON (t2.PlayerId = t1.PlayerId)
    WHERE t2.EndDate < INPUT('03/20/2022', MMDDYY10.);
QUIT;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 08:05:39