有一张横表A 值是这样的有一张表B 是这样的
表B里面的col_value 字段的值是对应表A的字段名,我要的结果是表A的字段名下面的值跟表Bcol_value 字段的值相对应的关联在一起,比如表A col1 的值是‘满意’,表B col_value 里面的COL1 对应的是‘用户对我们服务是否满意’
我要的结果是‘用户对我们服务是否满意(满意)’
表B里面的col_value 字段的值是对应表A的字段名,我要的结果是表A的字段名下面的值跟表Bcol_value 字段的值相对应的关联在一起,比如表A col1 的值是‘满意’,表B col_value 里面的COL1 对应的是‘用户对我们服务是否满意’
我要的结果是‘用户对我们服务是否满意(满意)’
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;
FOR colList IN
(SELECT * FROM col WHERE tname = 'OF_GW_JB'--这里写楼主你自己的查询语句
)
LOOP
--return colList.colname || '(' || colList.value || ')'
--换电脑把ORACLE删除了。没办法试,呵呵
END LOOP;
...END;
ORA-06502: PL/SQL: numeric or value error: character to number conversion error
(
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