【发布时间】:2021-11-12 15:26:58
【问题描述】:
对于以下查询,当引用“y”中的变量时,第 4 行出现错误。当我只使用“y.*”(第 5 行)时,查询成功运行,但是当我尝试从第 4 行中的指定字段(y.field1 作为 PRODUCT,y.field2 作为 PRODUCT_TYPE,y .entity,y.TYPE1)。对于输出,我希望首先列出这些字段以供视觉参考。
我有这种方法/逻辑适用于其他查询(因为我正在将此逻辑用于查询的多种变体和各种表)。但是,我认为这个问题在于我试图从我的联接语句中的表中引用字段。
(
select
-- categorization fields:
-- table2.field1 as PRODUCT, table2.field2 as PRODUCT_TYPE, table3.entity, table3.TYPE1
y.field1 as PRODUCT,
y.field2 as PRODUCT_TYPE,
y.entity,
y.TYPE1
,y.*
from (
select *
from (
-- table references:
select table1.*,
row_number() over (
partition by
-- categorization fields:
table2.field1,
table2.field2,
table3.entity,
table3.TYPE1
order by table3.entity
) as rn
-- table references
from table1
-- joins, links, and filtering:
inner join table6 on table1.field_1 = table6.code1
inner join table5 on (table6.code = table5.code1)
AND (table6.code = table5.code)
left join table3 on table6.ent1 = table3.ent_code
left join table2 on table1.extid = table2.extID
where table1.tdate between '01-APR-19' and '01-APR-21'
AND table1.refe NOT IN ('OFF')
) x
-- sample rows:
where rn <= 2
) y
);
如果有人有办法让我更好地指定这些字段来自哪些表,请告诉我。我希望我能做这样的事情:
y.table2.field1 as PRODUCT,
y.table2.field2 as PRODUCT_TYPE,
y.table3.entity,
y.table3.TYPE1
对不起,我没有可用的小提琴!
【问题讨论】:
-
您使用的是
SELECT table1.*,因此很容易确定它们的来源;他们都来自table1,而不是任何其他表。 -
以上是我针对这个问题的原始问题的链接
-
该链接表明您正在看到“与连接图的其余部分断开连接”,这是 SQL Developer 警告,而不是错误,并且并不总是可靠 - 如果您使用的是旧版本版本,升级,看看它是否会自行消失。或者您是否也遇到了真正的 ORA-nnnnn 错误?无论哪种方式,我都不确定您为什么不在问题中包含该信息。
-
那么您遇到了什么错误,为什么不想告诉我们?