关于字段名与字段值的关联
有一张横表A 值是这样的
有一张表B 是这样的
表B里面的col_value 字段的值是对应表A的字段名,我要的结果是表A的字段名下面的值跟表Bcol_value 字段的值相对应的关联在一起,比如表A col1 的值是‘满意’,表B col_value 里面的COL1 对应的是‘用户对我们服务是否满意’
我要的结果是‘用户对我们服务是否满意(满意)’
------解决方案--------------------开始以为能直接通过子查询完成 没想到直接方法 暂时想到下面这种.. 还要调试下 不知道对不 大致思路是这样的
下面b表2个字段简化了:c_v,p_n
create 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;
------解决方案--------------------写个存储过程试试?
DECLARE
BEGIN
...
FOR colList IN
(SELECT * FROM col WHERE tname = 'OF_GW_JB'--这里写楼主你自己的查询语句
)
LOOP
--return colList.colname
------解决方案-------------------- '('
------解决方案-------------------- colList.value
------解决方案-------------------- ')'
--换电脑把ORACLE删除了。没办法试,呵呵
END LOOP;
...
END;
------解决方案--------------------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 '
------解决方案--------------------