--表A
code     name   
col1       测试1
col2       测试2
--表B
ID   NAME  COL1   COL2
1     1     1      1
2     2     2      2--想得到的结果
select * from B
ID   NAME   测试1    测试2
1     1      1         1
2     2      2         2-------
B表列的别名取自A表 code 相对应的name值

解决方案 »

  1.   

    查询a表的列:
    select column_name
      from user_tab_columns
     where table_name='A';
      

  2.   

    SELECT id,
           c.name,
           MAX(decode(a.name, '测试1', col)) 测试1,
           MAX(decode(a.name, '测试1', col)) 测试2
      FROM a,
           (SELECT id, NAME, 'col1' code, col1 col
              FROM b
            UNION ALL
            SELECT id, NAME, 'col2' code, col2 FROM b) c
     WHERE a.code = c.code
     GROUP BY c.id, c.name;
     
    如果列数未知,使用动态SQL拼接成上述形式
      

  3.   

    还是写个处理函数吧在函数中查询出a表中的字段列表,拼接成sql字符串,比如叫f_get_sql() select ID,NAME,f_get_sql() from B