选择动态编号。在Oracle中使用select Query的列

时间:2014-09-20 12:29:26

标签: sql oracle oracle11g oracle10g

假设有一个表格( TB_dynamic_date ),其中column_name为“ Data_to_select

假设还有另一个带有列名的表 TB_Main_Data as 姓名,DOJ,id

那么,是否有可能以某种方式编写查询,通过该方式我可以获取动态编号。来自 TB_Main_Data 的列,使用表 TB_dynamic_date 其中 TB_dynamic_data 在“ Data_to_select ”下包含以下记录为字符串

1)Name,DOJ
2)Name,id
3)Name,id,DOJ
4)Name,id,DOj,Name||id

我需要做的事情如下: -

select **(1/2/3/4 record from TB_dynamic_data)** from TB_Main_Data

我希望,我能够清楚地解释,我想问的是什么。

2 个答案:

答案 0 :(得分:1)

在Oracle中,这看起来像:

declare
    v_columns varchar(4000);
    v_sql varchar(4000);
begin
    select data_to_selecct
    into v_columns
    from tb_dynamic_data
    where <whatever>;

    v_sql := 'select ' || v_columns || ' from tb_main_data';
    execute immediate v_sql;
end;

答案 1 :(得分:0)

您可以使用下面的动态查询

Declare @cols= ( select Data_to_select from TB_Dynamic_data where Id=2)
Declare @query nvarchar(max)  
Set @query = ' select '  + @cols + ' from TB_main_data'

Exec(@query)