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

Snowflake多连接SQL遇语法错误:unexpected 'on' 求解决方案

解决Snowflake SQL编译错误:syntax error unexpected 'on'

错误分析

你遇到的SQL compilation error: syntax error line 6 at position 75 unexpected 'on'通常由SQL语法格式问题或逻辑冲突引发,结合你的代码,核心排查方向如下:

1. 隐式逻辑冲突引发的解析偏移

你用LEFT JOIN关联rtncall和dlexp表,但在WHERE子句中直接过滤这两个表的非空字段:

  • rtncall.RETURNED_CALL_STATUS_CODE = 'CONTACTED'
  • dlexp.CURRENT_RECORD_IND = 'Y'

这会强制将LEFT JOIN转为INNER JOIN,虽属于逻辑问题,但部分场景下会导致解析器误判语法位置,引发错误提示偏移。

2. 不可见特殊字符或格式异常

错误指向ON关键字,大概率是ON之前的内容存在解析障碍:

  • 检查rtncall别名与ON之间是否有全角空格、制表符等不可见字符
  • 确认表名、别名拼写无多余符号或错误

修正后的SQL代码

SELECT
    clmt.CLAIMANT_NATURAL_KEY,
    dlexp.LOSS_EXPOSURE_NATURAL_KEY,
    MIN(rtncall.RETURNED_CALL_DATE_TIME_KEY) MIN_RETURN_CALL_DATE_TIME_KEY
FROM 
    PNC_PSA_DB.KEDW_KSG_LOSS_CDC.D_CLAIMANT clmt
LEFT JOIN 
    PNC_PSA_DB.KEDW_KSG_LOSS_CDC.D_CLAIM_CONTACT_RETURN_CALL rtncall 
    ON clmt.CLAIM_CONTACT_KEY = rtncall.CLAIM_CONTACT_KEY 
    AND rtncall.RETURNED_CALL_STATUS_CODE = 'CONTACTED'
LEFT JOIN 
    PNC_PSA_DB.KEDW_KSG_LOSS_CDC.D_LOSS_EXPOSURE dlexp 
    ON clmt.CLAIMANT_NATURAL_KEY = dlexp.CLAIMANT_NATURAL_KEY 
    AND dlexp.CURRENT_RECORD_IND = 'Y'
GROUP BY 
    clmt.CLAIMANT_NATURAL_KEY, 
    dlexp.LOSS_EXPOSURE_NATURAL_KEY

额外排查步骤

  1. 将SQL复制到纯文本编辑器(如Notepad++),开启显示所有字符功能,排查全角空格、异常换行符等问题
  2. 逐行核对表名、字段名,确保与Snowflake中实际对象一致
  3. 简化SQL,先保留FROM和第一个LEFT JOIN验证编译,逐步添加其他部分定位问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 03:36:30