在Oracle SQL中使用案例语句的部分时使用别名

The*_*ror 6 sql oracle alias case

如果可以在后面的Oracle SQL案例语句中使用它可以在select语句中使用前面说明的别名,我一直在尝试查找一段时间.我发现的大多数结果都是关于如何根据不同问题的case语句创建Alias.一个简单的例子是:

Select TABLEA.SomeIDNumber AS "Id",
       case ID
          when 3
          then 'foo'
          else 'bar'
       end AS "Results"
FROM OMEGA.TABLEA
Run Code Online (Sandbox Code Playgroud)

在我正在创建的SQL语句中真的不那么简单(它实际上是基于以前的case语句创建的,并且需要在各种表上进行一些连接来完成查询的其他完整拍摄,但是如果不知道它就不会有意义更多我无法分享的数据库).

我只是想知道以后在Oracle的select语句中是否可以在case语句中使用别名(我知道可以通过Access类似"SQL"来完成这些事情).或者我是否更好地重新选择select以使其成为嵌套的select语句?可能是可行的,只是更多的痛苦.

Ale*_*ole 8

不,select除了在order by子句中,您不能引用同一级别中的别名,因为Oracle在内部分配时.

从文档(重点添加):

您可以使用列别名c_alias标记选择列表中的前一个表达式,以便使用新标题显示该列.别名在查询期间有效地重命名选择列表项.别名可以在 ORDER BY子句中使用,但不能在查询中使用其他子句.

您需要使用内部查询,例如:

select "Id",
    case "Id"
        when 3
        then 'foo'
        else 'bar'
    end AS "Results"
from (
    select TABLEA.SomeIDNumber AS "Id",
    from TABLEA
);
Run Code Online (Sandbox Code Playgroud)