0

我有一个看起来有点像这样的查询:

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
  ...;

是否有任何解释或文档讨论这个或者它是未定义/随机行为?有什么方法可以让它与加入表格的内联视图一起工作?我找不到有关此的任何信息。

4

1 回答 1

0

毕竟问题不在于 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;

MS 查询错误

于 2019-08-28T09:39:36.563 回答