<body>
表一
<table width="151" border="1" cellpadding="0" cellspacing="0">
  <col width="239" />
  <col width="226" />
  <tr height="18">
    <td height="18" width="73">Name</td>
    <td width="72">jason</td>
  </tr>
  <tr height="18">
    <td height="18">Manager</td>
    <td>yyy</td>
  </tr>
  <tr height="18">
    <td height="18">region</td>
    <td>aaa</td>
  </tr>
  <tr height="18">
    <td height="18">Code</td>
    <td>123</td>
  </tr>
  <tr height="18">
    <td height="18">Level</td>
    <td>2</td>
  </tr>
  <tr height="18">
    <td height="18">Status</td>
    <td>2</td>
  </tr>
</table><p>
表二
<table cellspacing="0" cellpadding="0" border="1">
  <tr>
    <td>Name</td>
    <td>Manager</td>
    <td>region</td>
    <td>Code</td>
    <td>Level</td>
    <td>Status</td>
  </tr>
  <tr>
    <td>jason</td>
    <td>yyy</td>
    <td>aaa</td>
    <td>123</td>
    <td>2</td>
    <td>2</td>
  </tr>
</table>
表一的字段为 Name,jason ,其他下面对应的为数据表二的字段为 Name,Manager,region,Code,Level,Status,其他下面为对应的数据问题, 如何将表一的数据和字段 扭转成 表二的数据和字段
</body>

解决方案 »

  1.   

    把上面代码复制到html里面看的更清楚些   ~
      

  2.   


    这是表一的结构
    create table a
    (
           aname varchar2(20),
           jason varchar2(20)
    );
    insert into a values('Manager','yyy');
    insert into a values('region','aaa');
    insert into a values('code','123');
    insert into a values('alevel','2');
    insert into a values('status','2');
    select * from a;
    这是表二的结构
    create table b
    (
           aname varchar2(20),
           manager varchar2(20),
           region varchar2(20),
           code varchar2(20),
           alevel varchar2(20),
           status varchar2(20)
    );
    现在问题就是如何把表一的数据插入表二 (表二数据正确的应该如下:)
    insert into b values('jason','yyy','aaa','123','2','2');select * from b;
      

  3.   

    写存储过程,自己拼sql,动态执行.
      

  4.   

    利用user_tab_cols表进行逻辑处理.
      

  5.   


    insert into b 
    select 'jason' aname,
    Max(decode(aname,'Manager',jason)) Manager ,
    Max(decode(aname,'region',jason)) region,
    Max(decode(aname,'code',jason)) code,
    Max(decode(aname,'alevel',jason)) alevel,
    Max(decode(aname,'status',jason)) status
    from a GROUP BY 1;
      

  6.   

    Connected to Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 
    Connected as scott
     
    SQL> 
    SQL> CREATE OR REPLACE PROCEDURE proc_b_insert
      2  
      3  AS
      4  v_sql1  VARCHAR2(4000);
      5  v_sql2  VARCHAR2(4000);
      6  v_str   VARCHAR2(4000);
      7  V_COL   VARCHAR2(100);
      8  v_cnt   NUMBER(2);
      9  CURSOR cv_col IS
     10  SELECT column_name FROM user_tab_cols t WHERE t.table_name='B';
     11  BEGIN
     12     V_SQL1:='INSERT INTO B (ANAME';
     13     V_SQL2:=' VALUES(';
     14     SELECT column_name INTO v_str FROM user_tab_cols WHERE table_name='A' AND column_name<>'ANAME';
     15     v_sql2:=v_sql2||''''||lower(v_str)||'''';
     16     OPEN CV_COL;
     17     LOOP
     18     FETCH CV_COL INTO V_COL;
     19     EXIT WHEN cv_col%NOTFOUND;
     20     SELECT COUNT(*) INTO v_cnt FROM a WHERE upper(a.aname)=v_col;
     21     IF v_cnt=1 THEN
     22        SELECT a.jason INTO v_str FROM a WHERE upper(a.aname)=v_col;
     23        v_sql1:=v_sql1||','||v_col;
     24        v_sql2:=v_sql2||','''||v_str||'''';
     25     END IF;
     26     END LOOP;
     27     EXECUTE IMMEDIATE v_sql1||')'||v_sql2||')';
     28  END;
     29  /
     
    Procedure created
     
    SQL> truncate table b;
     
    Table truncated
     
    SQL> exec proc_b_insert;
     
    PL/SQL procedure successfully completed
     
    SQL> commit;
     
    Commit complete
     
    SQL> select * from b;
     
    ANAME                MANAGER              REGION               CODE                 ALEVEL               STATUS
    -------------------- -------------------- -------------------- -------------------- -------------------- --------------------
    jason                yyy                  aaa                  123                  2                    2
     
    SQL>