sql - Oracle 内联视图列别名仅在加入表之前有效,而在加入表时无效
问题描述
我有一个看起来有点像这样的查询:
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 也不在于查询,而实际上在于 Microsoft Query 本身,这是引发错误的程序。
它很旧,我希望我不必使用它...
以下两个简化查询在 Excel VBA 上都可以正常工作,但第二个查询在 MS Query 上不行。
select
*
from
(
select
'X' dummy
from
dual
) my_view join
dual on
my_view.dummy = dual.dummy;
select
*
from
dual join
(
select
'X' dummy
from
dual
) my_view on
dual.dummy = my_view.dummy;
推荐阅读
- algorithm - 如何确定图 G 是否具有权重为 k 的生成树?
- django - Django表单:在字段旁边而不是在其上方显示标签
- .htaccess - Docker 容器路由
- vb.net - 在 VB.net 中使用 'async' 和 'await' 无需返回
- android - React-native(android) AAPT:错误:找不到资源 android:attr/dialogCornerRadius
- android - 在Android上检测按下或释放(没有按下和释放)耳机键
- angular - 如何使用内容中的按钮更改角度选项卡?
- javascript - 无法在地图功能中显示/隐藏组件
- java - new Socket 挂起应用程序
- c# - 将运行 CMD 命令的 C# 应用程序转换为运行具有管理权限的 Powershell 命令的应用程序