有一张横表A 值是这样的有一张表B 是这样的
 表B里面的col_value 字段的值是对应表A的字段名,我要的结果是表A的字段名下面的值跟表Bcol_value 字段的值相对应的关联在一起,比如表A col1 的值是‘满意’,表B col_value 里面的COL1 对应的是‘用户对我们服务是否满意’
我要的结果是‘用户对我们服务是否满意(满意)’

解决方案 »

  1.   

    那个数据COL不一定知道col8也有可能到COL10 这样!
      

  2.   

    开始以为能直接通过子查询完成  没想到直接方法  暂时想到下面这种.. 还要调试下 不知道对不 大致思路是这样的下面b表2个字段简化了:c_v,p_ncreate or replace procedure p1 is
    Cursor cursor is select c_v from t_b order by c_v;
      sqlstr varchar2(4000);
    begin
      for c_name in cursor loop 
      begin
      sqlstr := sqlstr + ' select c_v,p_n,(select '||c_name.c_v||' from t_a where t_b.c_v = '''||c_name.c_v||''') c1 from t_b where c_v = '''||c_name.c_v||''' union all ';
      end;
      end loop;
      --DBMS_OUTPUT.PUT_LINE(sqlstr); --打印sql
      EXECUTE IMMEDIATE (sqlstr);   --执行sql
    end p1; 
      

  3.   

    写个存储过程试试?DECLAREBEGIN    ...
        FOR colList IN
        (SELECT * FROM col WHERE tname = 'OF_GW_JB'--这里写楼主你自己的查询语句
        )
        LOOP
          --return colList.colname || '(' || colList.value || ')'
          --换电脑把ORACLE删除了。没办法试,呵呵
        END LOOP;
        ...END;
      

  4.   


    ORA-06502: PL/SQL: numeric or value error: character to number conversion error
      

  5.   

    create  table test1 
    (
    COL1 varchar(50),
    COL2 varchar(50),
    COL3 varchar(50),
    COL4 varchar(50),
    COL5 varchar(50),
    COL6 varchar(50),
    COL7 varchar(50),
    COL8 varchar(50)
    );
    insert into test1 select '1','2','3','4','5','6','7','8' from dual
    select * from test1
    Create  Table test1_reverse  
    (col varchar(10),colvalue varchar(50)); 
    select * from test1_reverse
    select 
    'insert into test1_reverse(col,colvalue) select '|| ''''||column_name||''','|| column_name||' from '|| table_name||';'
    from user_tab_columns where table_name ='TEST1'select * from test1_reverse