oracle sql developer:00904. 00000 - "%s:无效标识符".我的错在哪里?

use*_*496 8 sql oracle oracle-sqldeveloper

我正在努力找到我的错.我收到此错误消息:

SQL-Fehler:ORA-00904:"S1"."PARTNO":ungültigerBezeichner00904. 00000 - "%s:无效标识符"

我检查了我的数据库,所有表都存在.

这是我的sql代码:

select s1.*
 , p.city as "Produktionsort" 
 , p.partname
from (select count(s.partno) as "Anzahl_Produktarten"
        , s.partno as "Partno" 
      from company.supp_part_job s 
      group by s.partno ) s1
 , company.part p 
where s1.partno IN (select p1.partno from company.part p1 where p1.city != 'London') 
   and p.partno = s1.partno 
group by s1.partno
Run Code Online (Sandbox Code Playgroud)

A.B*_*ade 5

因为您在内部选择 (s1) 中设置了别名,partno因为"Partno"您必须在外部查询中将其称为区分大小写:

select s1.*
 , p.city as "Produktionsort" 
 , p.partname
from (select count(s.partno) as "Anzahl_Produktarten"
        , s.partno as "Partno" 
      from company.supp_part_job s 
      group by s.partno ) s1
 , company.part p 
where s1."Partno" IN (select p1.partno from company.part p1 where p1.city != 'London') 
   and p.partno = s1."Partno" 
group by s1."Partno"
Run Code Online (Sandbox Code Playgroud)


Gle*_*enn 2

如果在列名称两边加上双引号,则会使其区分大小写。所以我认为这一行:

s.partno as "Partno" 
Run Code Online (Sandbox Code Playgroud)

正在创建区分大小写的 s1."Partno",但该where子句正在查找 s1.partno。尝试从列别名中删除双引号。