【发布时间】:2019-08-28 09:04:44
【问题描述】:
我的查询有点像这样:
select
...,
my_view.alias_name
from
tbl1 join
tbl2 on
tbl1.key = tbl2.key join
tbl3 on
tbl3.key = tbl3.key join
(
select
...,
(max(...) keep (...)) alias_name
from
...
) my_view on
tbl3.key = my_view.key
where
...;
它不起作用,因为alias_name 没有设置(保持名称(max(...) keep (...)),我不知道它是否可以在select my_view.name_or_alias 中引用)当我这样做时加入内联查看表格,但奇怪的是,当我在内联视图之后加入表格时它确实有效。
select
...,
my_view.alias_name
from
(
select
...,
(max(...) keep (...)) alias_name
from
...
) my_view join
tbl3 on
my_view.key = tbl3.key join
tbl2 on
tbl3.key = tbl2.key join
tbl1 on
tbl2.key = tbl1.key
where
...;
是否有任何解释或文档讨论这个或者它是未定义/随机行为?有什么方法可以让它与加入表格的内联视图一起工作?我找不到有关此的任何信息。
【问题讨论】:
-
“不起作用”不是有效的 Oracle 错误消息。
-
不同意你的看法。请分享实际查询和实际错误。
-
@a_horse_with_no_name 您的评论帮助我发现这是 Microsoft Query 的问题,它会引发一般错误(已翻译)“无法添加表 'table_name'。”即使在 Excel VBA 上尝试了相同的查询以尝试获取 Oracle 错误之后,它仍然可以正常工作。
-
@a_horse_with_no_name Trying
select * from ( select 'X' dummy from dual ) my_view join dual on my_view.dummy = dual.dummy;works fine whileselect * from dual join ( select 'X' dummy from dual ) my_view on dual.dummy = my_view.dummy;throws the error 在 MS Query 上而不是在 VBA 上(通常直接运行查询并给出 Oracle 错误,如果有的话)。跨度>
标签: sql oracle alias ms-query inline-view