从oracle数据库中选择人工值

从oracle数据库中选择人工值,oracle,alias,rows,Oracle,Alias,Rows,这听起来可能是个奇怪的问题,但我向你保证,这是有目的的。现在,我有一个“无用”的子查询: select distinct 'gallery' as gallery, 'echo' as echo, 'turnitin' as turnitin, 'assignment' assignment, 'assessment' as assessment from table_x; 显然,它会返回结果: GALLERY,ECHO,TURNITIN,ASSIGNMENT,ASSESS

这听起来可能是个奇怪的问题,但我向你保证,这是有目的的。现在,我有一个“无用”的子查询:

select distinct
  'gallery' as gallery,
  'echo' as echo,
  'turnitin' as turnitin,
  'assignment' assignment,
  'assessment' as assessment
from table_x;
显然,它会返回结果:

GALLERY,ECHO,TURNITIN,ASSIGNMENT,ASSESSMENT
gallery,echo,turnitin,assignment,assessment
我真正想要的是:

DATA_TYPE
gallery
echo
turnitin
assignment
assessment
这将允许我在将数据用作子查询时根据需要对其进行操作。我只有对数据库的读取权限,因此我希望将其保存在一个
SELECT
语句中。我该怎么做呢?

像这样的事情

with temp_table as
(select 'gallery' data_type from dual
 union
 select 'echo' data_type from dual
 union
 select 'turnitin' data_type from dual
 -- etc
)
select data_type
from temp_table;
像这样的

with temp_table as
(select 'gallery' data_type from dual
 union
 select 'echo' data_type from dual
 union
 select 'turnitin' data_type from dual
 -- etc
)
select data_type
from temp_table;

UNPIVOT在这里工作得很好:

with t as (
select 'gallery' as gallery,
  'echo' as echo,
  'turnitin' as turnitin,
  'assignment' assignment,
  'assessment' as assessment
from dual
)
select data_type 
  from t
unpivot (
  data_type for column1 in (gallery, echo, turnitin, assignment, assessment)
)

DATA_TYPE
---------
gallery
echo
turnitin
assignment
assessment

UNPIVOT在这里工作得很好:

with t as (
select 'gallery' as gallery,
  'echo' as echo,
  'turnitin' as turnitin,
  'assignment' assignment,
  'assessment' as assessment
from dual
)
select data_type 
  from t
unpivot (
  data_type for column1 in (gallery, echo, turnitin, assignment, assessment)
)

DATA_TYPE
---------
gallery
echo
turnitin
assignment
assessment

你是我翅膀下的风。你是我翅膀下的风。另一种方法有效,但这种方法更清晰。选择较少,这种方法可能比我的方法更有效,尽管在现实世界中,我想你可能必须创造大量记录才能注意到改进。我认为如果你创建了很多记录,我的方法实际上会更清晰、更容易管理,但我想这可能是口味/观点的问题。顺便问一下,有什么特别的原因让你不直接创建一个表吗?@Bacs只读访问这个特定的数据库:)另一个可行,但这个方法更清晰。选择更少,这个方法可能比我的更有效,虽然在现实世界中,我想你可能必须创造大量的记录才能注意到改进。我认为如果你创建了很多记录,我的方法实际上会更清晰、更容易管理,但我想这可能是口味/观点的问题。顺便问一下,有什么特别的原因让你不直接创建一个表吗?@Bacs对这个数据库的只读访问:)