我有两个表,Project和Project_Property,从Project到Project_Property有1到多个.我正在尝试使用子查询通过Project获取三个属性并加入Project(示例中的"Repo").警告:我主要是一个SQL Server人员,因此我正在尝试将我所知道的工作用于SQL并将其投影到Oracle中.
我写了这个:
select s1.Repo, s1.Solution, p1.Project, a1.Assembly
from
(
select p.name as "Repo", pp.value as "Solution"
from project p join project_property pp on p.id=pp.project_id
where pp.name='mssolutionname'
) s1 join
(
select p.name as "Repo", pp.value as "Project"
from project p join project_property pp on p.id=pp.project_id
where pp.name='msprojectname'
) p1 on p1.Repo=s1.Repo join
(
select p.name as "Repo", pp.value as "Assembly"
from project p join project_property pp on p.id=pp.project_id
where pp.name='msassemblyname'
) a1 on s1.Repo=a1.Repo;
Run Code Online (Sandbox Code Playgroud)
但当我运行它时,我得到:
ORA-00904: "S1"."REPO": invalid identifier
Run Code Online (Sandbox Code Playgroud)
在Oracle中,此类查询是否有不同的格式?如何引用外部主查询中子查询中选择的值,尤其是在加入子查询时.或者我只是错过了一个错字.不会是第一次.
TIA.
如果使用双引号对列进行别名,则列名称将区分大小写.由于您编码p.name as "Repo",该列必须被称为si."Repo".如果你省略了双引号(p.name as repo),那么你可以参考它在不区分大小写的方式(si.repo,si.Repo,或si.rEPo)