CREATE TABLE tab_test(
       id    NUMBER,
       sys_code VARCHAR2(10),
       sub_sys_code VARCHAR2(10),
       item_id VARCHAR2(10),
       nme_data VARCHAR2(10)
       );INSERT INTO tab_test(id,sys_code,sub_sys_code,item_id,nme_data)
       VALUES('1','GIA','ABC','XIN','黄');
INSERT INTO tab_test(id,sys_code,sub_sys_code,item_id,nme_data)
       VALUES('2','GIA','ABC','MING','文杰');
INSERT INTO tab_test(id,sys_code,sub_sys_code,item_id,nme_data)
       VALUES('3','GIA','ABC','BIE','男');
INSERT INTO tab_test(id,sys_code,sub_sys_code,item_id,nme_data)
       VALUES('4','GIA','ABD','XIN','林');
INSERT INTO tab_test(id,sys_code,sub_sys_code,item_id,nme_data)
       VALUES('5','GIA','ABD','MING','丽');
INSERT INTO tab_test(id,sys_code,sub_sys_code,item_id,nme_data)
       VALUES('6','GIA','ABD','BIE','女');       
        ID SYS_CODE   SUB_SYS_CODE ITEM_ID    NME_DATA
---------- ---------- ------------ ---------- ----------
         1 GIA        ABC          XIN        黄
         2 GIA        ABC          MING       文杰
         3 GIA        ABC          BIE        男
         4 GIA        ABD          XIN        林
         5 GIA        ABD          MING       丽
         6 GIA        ABD          BIE        女
       
              
SELECT sub_sys_code,
       MAX(decode(item_id,'XIN',NME_DATA,NULL)) "XIN_DATA",
       MAX(decode(item_id,'MING',NME_DATA,NULL)) "MING_DATA",
       MAX(decode(item_id,'BIE',NME_DATA,NULL)) "BIE_DATA"
FROM tab_test
GROUP BY sub_sys_codeSUB_SYS_CODE XIN_DATA   MING_DATA  BIE_DATA
------------ ---------- ---------- ----------
ABC          黄         文杰       男
ABD          林         丽         女

解决方案 »

  1.   

    关于竖表转横表的问题,请参考我的Blog上的一篇:  http://blog.csdn.net/dinya2003/
      

  2.   

    SELECT MAX(decode(item_id,'XIN',NME_DATA,NULL)) "XIN_DATA",
           MAX(decode(item_id,'MING',NME_DATA,NULL)) "MING_DATA",
           MAX(decode(item_id,'BIE',NME_DATA,NULL)) "BIE_DATA"
    FROM 表
    GROUP BY SYS_CODE,SUB_SYS_CODE;