【问题标题】:Oracle inline view column alias only working before joining tables and not when joining to tablesOracle 内联视图列别名仅在加入表之前有效,而在加入表时无效
【发布时间】: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 while select * 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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 2017-06-18
    • 2020-08-19
    • 1970-01-01
    相关资源
    最近更新 更多