Sql 如何";“展平”;表表达式的结构

Sql 如何";“展平”;表表达式的结构,sql,oracle,Sql,Oracle,我有一个varray类型想要用表表达式“展平”结构 示例数据 CREATE OR REPLACE TYPE ARIS.NUMBER_VARRAY_5 AS VARRAY (5) OF NUMBER NOT NULL; CREATE TABLE ARIS.TEST_2 ( DATE_START DATE, DATE_END DATE, O3 ARIS.NUMBER_VARRAY_5, CATEGORY NUMBER )

我有一个varray类型想要用表表达式“展平”结构

示例数据

CREATE OR REPLACE TYPE ARIS.NUMBER_VARRAY_5 AS VARRAY (5) OF NUMBER NOT NULL;  


CREATE TABLE ARIS.TEST_2  
(  
  DATE_START  DATE,  
  DATE_END    DATE,  
  O3          ARIS.NUMBER_VARRAY_5,  
  CATEGORY    NUMBER  
)  


SET DEFINE OFF;  
Insert into TEST_2  
   (DATE_START, DATE_END, O3, CATEGORY)  
 Values  
   (TO_DATE('01/01/2005 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('01/05/2005 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), NUMBER_VARRAY_5(281.25,-9999,291.5,310.5,298.75), NULL);  
Insert into TEST_2  
   (DATE_START, DATE_END, O3, CATEGORY)  
 Values  
   (TO_DATE('01/02/2005 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('01/06/2005 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), NUMBER_VARRAY_5(-9999,291.5,310.5,298.75,300.75), NULL);  
COMMIT;  
使用SQL语句

select O3.* from test_2 t, table(t.o3) O3  
我能得到结果

COLUMN_VALUE
281.25
-9999
291.5
310.5
298.75
-9999
291.5
310.5
298.75
300.75
问题是我如何得到这样的结果

DATE_START  DATE_END    03.VALUE1 03.VALUE2 03.VALUE3 03.VALUE4 03.VALUE5
01/01/2005  01/05/2005             281.25    -9999     291.5   310.5     298.75
01/02/2005  01/06/2005             -9999     291.5     310.5   298.75    300.75
试试这个

SELECT
   * 
FROM
   (
      select
         t.Date_start,
         t.Date_end,
         row_number() OVER ( PARTITION BY DATE_START, DATE_END 
      ORDER BY
         ROWNUM) rn,
         O3.* 
      from
         test_2 t,
         table(t.o3) O3 
   )
   PIVOT ( MAX(column_value) FOR rn in 
   (
      1 as "03.VALUE1",
      2 as "03.VALUE2",
      3 as "03.VALUE3",
      4 as "03.VALUE4",
      5 as "03.VALUE5"
   )
) ;