我查询出来的数据是这样的
field1   field2   field2
1201 02 84777939.9
1201 05 6753534.3
1201 08 15551376.06
我想将数据变成如下样式(field2中的数据项变为字段列)
field1   field_02      field_05     field_08
1201 84777939.9    6753534.3    15551376.06
该怎么用pl/sql来实现呢?    

解决方案 »

  1.   

    select field1,
    max(decode(field2,'02','field_02')) field_02,
    max(decode(field2,'05','field_05')) field_05,
    max(decode(field2,'08','field_08')) field_08
    from t
    group by field1;
      

  2.   

    更正:select field1,
    max(decode(field2,'02',field3)) field_02,
    max(decode(field2,'05',field3)) field_05,
    max(decode(field2,'08',field3)) field_08
    from t
    group by field1;
      

  3.   

    field1   field2   field2
    --->field1   field2   field3
    之后:
    select y.field1, 
           sum(y.field_02) as field_02,sum(y.field_05) as field_05,
           sum(y.field_08) as field_08
     from 
      (
        select x.field1, 
               decode(x.field2,'02',x.field3 ) as  field_02,decode(x.field2,'05',x.field3 ) as field_05,
               decode(x.field2,'08',x.field3 ) as field_08
        from  表 x
      ) ygroup by y.field1
      

  4.   

    谢谢njhart2003的帮助,这个问题已经解决了,但查询出二个上面的这类结果集后,再将这二个结果集中的字段field2的值变为二个字段来显示,该怎么解决呢?
    我查询出的二个结果集分别为:
    结果集1:
    field1   field2   field3
    1201 02 11
    1201 05 21
    结果集2:
    field1   field2   field3
    1201 02 12
    1201 05 22
    现在要将这二个结果集合并,并将数据显示为:
    field1   field_02_01   field_02_02   field_05_01   field_05_02
    1201     11            12            21            22               
      

  5.   

    我的整个语句的表达式为,请各位大侠解惑:
    SELECT SWJGZZJGDM,
    max(decode(SZ1,'02',RKJE)) f_02_1,
    max(decode(SZ2,'02',RKJE)) f_02_2,
    max(decode(SZ3,'02',RKJE)) f_02_3,
    max(decode(SZ1,'05',RKJE)) f_05_1,
    max(decode(SZ2,'05',RKJE)) f_05_2,
    max(decode(SZ3,'05',RKJE)) f_05_3,
    max(decode(SZ1,'08',RKJE)) f_08_1,
    max(decode(SZ2,'08',RKJE)) f_08_2,
    max(decode(SZ3,'08',RKJE)) f_08_3,
    max(decode(SZ1,'10',RKJE)) f_10_1,
    max(decode(SZ2,'10',RKJE)) f_10_2,
    max(decode(SZ3,'10',RKJE)) f_10_3,
    max(decode(SZ1,'11',RKJE)) f_11_1,
    max(decode(SZ2,'11',RKJE)) f_11_2,
    max(decode(SZ3,'11',RKJE)) f_11_3,
    max(decode(SZ1,'12',RKJE)) f_12_1,
    max(decode(SZ2,'12',RKJE)) f_12_2,
    max(decode(SZ3,'12',RKJE)) f_12_3,
    max(decode(SZ1,'13',RKJE)) f_13_1,
    max(decode(SZ2,'13',RKJE)) f_13_2,
    max(decode(SZ3,'13',RKJE)) f_13_3,
    max(decode(SZ1,'14',RKJE)) f_14_1,
    max(decode(SZ2,'14',RKJE)) f_14_2,
    max(decode(SZ3,'14',RKJE)) f_14_3,
    max(decode(SZ1,'15',RKJE)) f_15_1,
    max(decode(SZ2,'15',RKJE)) f_15_2,
    max(decode(SZ3,'15',RKJE)) f_15_3,
    max(decode(SZ1,'16',RKJE)) f_16_1,
    max(decode(SZ2,'16',RKJE)) f_16_2,
    max(decode(SZ3,'16',RKJE)) f_16_3,
    max(decode(SZ1,'17',RKJE)) f_17_1,
    max(decode(SZ2,'17',RKJE)) f_17_2,
    max(decode(SZ3,'17',RKJE)) f_17_3,
    max(decode(SZ1,'18',RKJE)) f_18_1,
    max(decode(SZ2,'18',RKJE)) f_18_2,
    max(decode(SZ3,'18',RKJE)) f_18_3,
    max(decode(SZ1,'19',RKJE)) f_19_1,
    max(decode(SZ2,'19',RKJE)) f_19_2,
    max(decode(SZ3,'19',RKJE)) f_19_3,
    max(decode(SZ1,'20',RKJE)) f_20_1,
    max(decode(SZ2,'20',RKJE)) f_20_2,
    max(decode(SZ3,'20',RKJE)) f_20_3,
    max(decode(SZ1,'21',RKJE)) f_21_1,
    max(decode(SZ2,'21',RKJE)) f_21_2,
    max(decode(SZ3,'21',RKJE)) f_21_3,
    max(decode(SZ1,'30',RKJE)) f_30_1,
    max(decode(SZ2,'30',RKJE)) f_30_2,
    max(decode(SZ3,'30',RKJE)) f_30_3,
    max(decode(SZ1,'51',RKJE)) f_51_1,
    max(decode(SZ2,'51',RKJE)) f_51_2,
    max(decode(SZ3,'51',RKJE)) f_51_3,
    max(decode(SZ1,'52',RKJE)) f_52_1,
    max(decode(SZ2,'52',RKJE)) f_52_2,
    max(decode(SZ3,'52',RKJE)) f_52_3,
    max(decode(SZ1,'53',RKJE)) f_53_1,
    max(decode(SZ2,'53',RKJE)) f_53_2,
    max(decode(SZ3,'53',RKJE)) f_53_3,
    max(decode(SZ1,'71',RKJE)) f_71_1,
    max(decode(SZ2,'71',RKJE)) f_71_2,
    max(decode(SZ3,'71',RKJE)) f_71_3,
    max(decode(SZ1,'72',RKJE)) f_72_1,
    max(decode(SZ2,'72',RKJE)) f_72_2,
    max(decode(SZ3,'72',RKJE)) f_72_3,
    max(decode(SZ1,'73',RKJE)) f_73_1,
    max(decode(SZ2,'73',RKJE)) f_73_2,
    max(decode(SZ3,'73',RKJE)) f_73_3,
    max(decode(SZ1,'74',RKJE)) f_74_1,
    max(decode(SZ2,'74',RKJE)) f_74_2,
    max(decode(SZ3,'74',RKJE)) f_74_3,
    max(decode(SZ1,'75',RKJE)) f_75_1,
    max(decode(SZ2,'75',RKJE)) f_75_2,
    max(decode(SZ3,'75',RKJE)) f_75_3,
    max(decode(SZ1,'76',RKJE)) f_76_1,
    max(decode(SZ2,'76',RKJE)) f_76_2,
    max(decode(SZ3,'76',RKJE)) f_76_3,
    max(decode(SZ1,'88',RKJE)) f_88_1,
    max(decode(SZ2,'88',RKJE)) f_88_2,
    max(decode(SZ3,'88',RKJE)) f_88_3,
    max(decode(SZ1,'89',RKJE)) f_89_1,
    max(decode(SZ2,'89',RKJE)) f_89_2,
    max(decode(SZ3,'89',RKJE)) f_89_3
    FROM 
    (
    SELECT SZDM SZ1,
    SWJGZZJGDM,
    SUM(RKJE) RKJE
    FROM SBDB.SB_JL_SBJKZB SBJKZB 
    WHERE SBRQ >=TO_DATE('2005-06-01','YYYY-MM-DD') 
    GROUP BY SZDM,SWJGZZJGDM
    )
    A
    FULL OUTER JOIN 
    (
    SELECT SZDM SZ2,
    SWJGZZJGDM,
    SUM(RKJE) RKJE
    FROM SBDB.SB_JL_SBJKZB SBJKZB
    WHERE SBRQ >=TO_DATE('2004-06-01','YYYY-MM-DD') AND SBRQ <=TO_DATE('2004-06-30','YYYY-MM-DD') 
    GROUP BY SZDM,SWJGZZJGDM
    )
    B
    ON B.SZ2=A.SZ1
    FULL OUTER JOIN  
    (
    SELECT SZDM SZ3,
    SWJGZZJGDM,
    SUM(RKJE) RKJE
    FROM SBDB.SB_JL_SBJKZB SBJKZB
    WHERE SBRQ >=TO_DATE('2005-01-01','YYYY-MM-DD') AND SBRQ <=TO_DATE('2005-12-31','YYYY-MM-DD') 
    GROUP BY SZDM,SWJGZZJGDM
    )
    C
    ON C.SZ3=A.SZ1GROUP BY SWJGZZJGDM
      

  6.   

    实体化视图(Materialized View)即快照(Snapshot),也称物化视图,
    实体化视图常用来存放预计算的合计数据,如汇总和平均。实体化视图
    也可以是主表的一个完整副本。建立实体化视图的语句(此处只列出常用选项):
      CREATE MATERILIZED VIEW [SCHEMA.] 实体化视图名
      [TABLESPACE] [STORAGE]
      [REFRESH [FAST|FORCE|COMPLETE]]
      [START WITH 日期] [NEXT 日期]
      [FOR UPDATE]
      AS 子查询例:建立物化视图
    Create Materialized View AA
    Refresh Complete
    As Select * From AA.TABLE_NAME;手工刷新
    EXEC DBMS_REFRESH.REFRESH('AA');
    还有自动刷新
    即定义在某一时间点刷新。如:
    Create Materialized View TEST
    Refresh Complete
    Start With Sysdate+10/24 Next Trunc(Sysdate,’Day’)+10/24
    As Select * FROM TABLE;