Oracle - select语句中的动态列名

Ame*_*cus 8 oracle

题:

是否可以在select语句中根据其结果集中的值更改列名?

例如,如果year结果集中的值小于1950,则为该列OldYear命名,否则将该列命名NewYear.该year结果集中的值是保证所有记录相同.

我认为这是不可能的,但这是我尝试测试这个想法的失败:

select 1 as  
(case  
when 2 = 1 then "name1";  
when 1 = 1 then "name2")  
from dual; 
Run Code Online (Sandbox Code Playgroud)

Bil*_*win 5

您不能更改结果集的每一行的列名称.这是关系数据库的基础.列的名称是表"header"的一部分,名称适用于所有行下面的列.


评论:好的,也许OP Americus意味着结果已知恰好是一行.但无论如何,SQL没有语法来支持动态列别名.列别名在查询中必须是常量.

即使动态SQL也无济于事,因为您必须运行两次查询.一次获取值,第二次使用不同的列别名重新运行查询.