【发布时间】:2015-01-18 16:54:49
【问题描述】:
当我尝试执行我的 SQL SELECT 语句时出现以下错误
无法执行语句。 未找到相关名称“联系人” SQLCODE=-142,ODBC 3 状态“42S02” 第 1 行,第 1 列我的代码如下
Select forename, surname, email, quotedate
From ( SELECT *, ROW_NUMBER() OVER (PARTITION BY tblQuote.contno ORDER BY quoteno DESC) AS rn
FROM dba.quotehdr as tblQuote left join dba.contact as tblContact on tblQuote.contno = tblContact.contno)q
where rn = 1 and quotedate <=today()-720 and emailbounced = 0 and email is not null and dba.contact.statusflag = 'A'
order by quotedate desc
此错误仅在我添加时发生
dba.contact.statusflag = 'A'
我试过这个
tblContact.statusflag = 'A'
我得到同样的错误!
有什么建议吗?
【问题讨论】:
-
组成子查询
q的单独表仅在该子查询中可见。在子查询之外,所有的列都只属于q。 -
您确定您使用的是 Oracle 吗?这有点不对劲......你不能使用
AS来给表起别名;TODAY()不是一个有效的函数(它是SYSDATE)并且不需要括号;如果您选择*和其他列,您需要为其加上别名,即tablequote.*(请不要这样做,只选择所需的列)并且您引用statusflag超出范围,为什么要指定当您不从中选择时,该表?如果您的 SELECT 中有多个具有该名称的列,则会导致更多错误。 -
-00142似乎不是有效的 Oracle 错误消息,您确定这是正确的错误号吗? -
“Adaptive Server Anyhwere”是不是 Oracle
-
据我所知,它是一个 Oracle 系统。 Adaptive Server Anywhere 9。我还在交互式 SQL/Infomaker 中编写 SQL 脚本。
标签: sql window-functions sybase-asa