【问题标题】:Use a view's column alias in a seperate SELECT statement在单独的 SELECT 语句中使用视图的列别名
【发布时间】:2018-07-18 20:52:22
【问题描述】:

我创建了一个视图,其中有一列带有别名,现在我想通过单独的 SELECT 语句在该列上使用 MAX() 函数,但我不知道如何操作。 (对于我在 MAX() 函数中编写的内容,我不断收到“无效标识符”错误。)

CREATE OR REPLACE VIEW C17_AbfrageBView AS
SELECT p.PersonID, p.Vorname, p.Nachname,
       COUNT(DISTINCT f.FachID) "Fachanzahl" -- this column
FROM  ...
GROUP BY p.PersonID, p.Vorname, p.Nachname
ORDER BY 4;


SELECT PersonID, Vorname, Nachname,
       MAX(Fachanzahl) "Fachanzahl" -- right here
FROM C17_AbfrageBView
GROUP BY PersonID, Vorname, Nachname;

我也试过了:

SELECT ..., MAX(COUNT(DISTINCT FachID)) "Fachanzahl"
FROM C17_AbfrageBView
...

感谢您的帮助!

【问题讨论】:

  • 我不知道您为什么会收到该错误,但是在视图中您已经对这些列进行了分组,为什么还要在选择中再次这样做?您尝试选择的MAX 将与视图中的值相同。

标签: sql oracle select view alias


【解决方案1】:

你必须使用如下

SELECT PersonID, Vorname, Nachname,
       MAX([Fachanzahl]) "Fachanzahl" -- right here
FROM C17_AbfrageBView
GROUP BY PersonID, Vorname, Nachname;

使用[]

问候。

【讨论】:

    【解决方案2】:

    视图 C17_AbfrageBView 有一个名为 "Fachanzahl" 的列(区分大小写,需要双引号),因此在查询视图时必须引用它。

    您可以描述视图(SQL*Plus 中的describe c17_abfragebview,或右键单击 IDE 中的名称)以确认可用列的列表。

    但区分大小写的名称很不方便,因此我强烈建议将列命名为 Fachanzahl 而不是 "Fachanzahl"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-13
      • 2022-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-24
      相关资源
      最近更新 更多