Sql 创建具有两个不同查询的视图,同一个表具有PIVOT,但有一个额外的不同列

Sql 创建具有两个不同查询的视图,同一个表具有PIVOT,但有一个额外的不同列,sql,merge,pivot,oracle-sqldeveloper,Sql,Merge,Pivot,Oracle Sqldeveloper,我正在尝试合并生成两个数据透视的两个查询,即数据透视1和数据透视2(尝试合并两个数据透视) 我有两个不同的问题,比如1号问题和2号问题 问题1如下: 查询1输出(数据透视1): 问题2如下: 查询2输出(数据透视2): 是否有任何方法可以像下面那样附加两个输出 COLUMN_A COLUMN_B CP1 CP2 CP3 Nothing here DATA1_IN_COLUMN_B 12 23 34 Nothing here

我正在尝试合并生成两个数据透视的两个查询,即数据透视1和数据透视2(尝试合并两个数据透视) 我有两个不同的问题,比如1号问题和2号问题

问题1如下:

查询1输出(数据透视1):

问题2如下:

查询2输出(数据透视2):

是否有任何方法可以像下面那样附加两个输出

 COLUMN_A              COLUMN_B         CP1 CP2 CP3
Nothing here        DATA1_IN_COLUMN_B   12  23  34
Nothing here        DATA2_IN_COLUMN_B   45  56  67
Nothing here        DATA3_IN_COLUMN_B   78  89  98
DATA1_IN_COLUMN_A   DATA1_IN_COLUMN_B   12  23  34
DATA2_IN_COLUMN_A   DATA2_IN_COLUMN_B   45  56  67
DATA3_IN_COLUMN_A   DATA2_IN_COLUMN_B   78  89  98
DATA4_IN_COLUMN_A   DATA3_IN_COLUMN_B   21  32  54
如果没有,那么什么是实现此输出的替代方案,因为输出顺序不能被破坏。
TIA.

最简单的方法可能是
将所有查询联合起来
两个查询:

SELECT *
FROM (
    SELECT 
        NULL AS COLUMN_A,
        COLUMN_B,
        NVL(COLUMN_IN_PIVOT1,0) AS COLUMN_IN_PIVOT1,
        NVL(COLUMN_IN_PIVOT2,0) AS COLUMN_IN_PIVOT2,
        NVL(COLUMN_IN_PIVOT3,0) AS COLUMN_IN_PIVOT3
    FROM (
        SELECT COLUMN_B,COLUMN_C,COLUMN_D,
        FROM BASE_TABLE
        WHERE COLUMN_B IN ('DATA1_IN_COLUMN_B', 'DATA2_IN_COLUMN_B', 'DATA3_IN_COLUMN_B')
    )
    PIVOT (
        SUM(COLUMN_D)
        FOR(COLUMN_C)
        IN ('COLUMN_IN_PIVOT1' AS CP1,'COLUMN_IN_PIVOT2' AS CP2,'COLUMN_IN_PIVOT3' AS CP3)
    )
    UNION ALL
    SELECT 
        COLUMN_A,
        COLUMN_B,
        NVL(COLUMN_IN_PIVOT1,0) AS COLUMN_IN_PIVOT1,
        NVL(COLUMN_IN_PIVOT2,0) AS COLUMN_IN_PIVOT2,
        NVL(COLUMN_IN_PIVOT3,0) AS COLUMN_IN_PIVOT3
    FROM (
        SELECT COLUMN_A,COLUMN_B,COLUMN_C,COLUMN_D,
        FROM BASE_TABLE
        WHERE 
            COLUMN_A IN ('DATA1_IN_COLUMN_A', 'DATA2_IN_COLUMN_A', 'DATA3_IN_COLUMN_A', 'DATA4_IN_COLUMN_A', 'DATA5_IN_COLUMN_A')
            AND COLUMN_B IN ('DATA1_IN_COLUMN_B', 'DATA2_IN_COLUMN_B', 'DATA3_IN_COLUMN_B') 
    )
    PIVOT (
        sum(COLUMN_D)
        for(COLUMN_C)
        IN ('COLUMN_IN_PIVOT1' AS CP1,'COLUMN_IN_PIVOT2' AS CP2,'COLUMN_IN_PIVOT3' AS CP3)
    )
) x
ORDER BY COLUMN_A NULLS FIRST, COLUMN_B;

谢谢你的及时回复。这帮了我一半的忙,你能帮我维持输出的秩序吗。
select 
   COLUMN_A,
   COLUMN_B,
   NVL(COLUMN_IN_PIVOT1,0) AS COLUMN_IN_PIVOT1,
   NVL(COLUMN_IN_PIVOT2,0) AS COLUMN_IN_PIVOT2,
   NVL(COLUMN_IN_PIVOT3,0) AS COLUMN_IN_PIVOT3
FROM
   (
   SELECT COLUMN_A,COLUMN_B,COLUMN_C,COLUMN_D,
   FROM BASE_TABLE
   WHERE 
     COLUMN_A IN ('DATA1_IN_COLUMN_A, DATA2_IN_COLUMN_A, DATA3_IN_COLUMN_A', DATA4_IN_COLUMN_A', 
                  DATA5_IN_COLUMN_A')
     COLUMN_B IN ('DATA1_IN_COLUMN_B, DATA2_IN_COLUMN_B, DATA3_IN_COLUMN_B') 
   )
pivot
   (
    sum(COLUMN_D)
    for(COLUMN_C)
    IN ('COLUMN_IN_PIVOT1' AS CP1,'COLUMN_IN_PIVOT2' AS CP2,'COLUMN_IN_PIVOT3' AS CP3)
   )
ORDER BY COLUMN_A;
COLUMN_A            COLUMN_B            CP1 CP2 CP3
DATA1_IN_COLUMN_A   DATA1_IN_COLUMN_B   12  23  34
DATA2_IN_COLUMN_A   DATA2_IN_COLUMN_B   45  56  67
DATA3_IN_COLUMN_A   DATA2_IN_COLUMN_B   78  89  98
DATA4_IN_COLUMN_A   DATA3_IN_COLUMN_B   21  32  54
 COLUMN_A              COLUMN_B         CP1 CP2 CP3
Nothing here        DATA1_IN_COLUMN_B   12  23  34
Nothing here        DATA2_IN_COLUMN_B   45  56  67
Nothing here        DATA3_IN_COLUMN_B   78  89  98
DATA1_IN_COLUMN_A   DATA1_IN_COLUMN_B   12  23  34
DATA2_IN_COLUMN_A   DATA2_IN_COLUMN_B   45  56  67
DATA3_IN_COLUMN_A   DATA2_IN_COLUMN_B   78  89  98
DATA4_IN_COLUMN_A   DATA3_IN_COLUMN_B   21  32  54
SELECT *
FROM (
    SELECT 
        NULL AS COLUMN_A,
        COLUMN_B,
        NVL(COLUMN_IN_PIVOT1,0) AS COLUMN_IN_PIVOT1,
        NVL(COLUMN_IN_PIVOT2,0) AS COLUMN_IN_PIVOT2,
        NVL(COLUMN_IN_PIVOT3,0) AS COLUMN_IN_PIVOT3
    FROM (
        SELECT COLUMN_B,COLUMN_C,COLUMN_D,
        FROM BASE_TABLE
        WHERE COLUMN_B IN ('DATA1_IN_COLUMN_B', 'DATA2_IN_COLUMN_B', 'DATA3_IN_COLUMN_B')
    )
    PIVOT (
        SUM(COLUMN_D)
        FOR(COLUMN_C)
        IN ('COLUMN_IN_PIVOT1' AS CP1,'COLUMN_IN_PIVOT2' AS CP2,'COLUMN_IN_PIVOT3' AS CP3)
    )
    UNION ALL
    SELECT 
        COLUMN_A,
        COLUMN_B,
        NVL(COLUMN_IN_PIVOT1,0) AS COLUMN_IN_PIVOT1,
        NVL(COLUMN_IN_PIVOT2,0) AS COLUMN_IN_PIVOT2,
        NVL(COLUMN_IN_PIVOT3,0) AS COLUMN_IN_PIVOT3
    FROM (
        SELECT COLUMN_A,COLUMN_B,COLUMN_C,COLUMN_D,
        FROM BASE_TABLE
        WHERE 
            COLUMN_A IN ('DATA1_IN_COLUMN_A', 'DATA2_IN_COLUMN_A', 'DATA3_IN_COLUMN_A', 'DATA4_IN_COLUMN_A', 'DATA5_IN_COLUMN_A')
            AND COLUMN_B IN ('DATA1_IN_COLUMN_B', 'DATA2_IN_COLUMN_B', 'DATA3_IN_COLUMN_B') 
    )
    PIVOT (
        sum(COLUMN_D)
        for(COLUMN_C)
        IN ('COLUMN_IN_PIVOT1' AS CP1,'COLUMN_IN_PIVOT2' AS CP2,'COLUMN_IN_PIVOT3' AS CP3)
    )
) x
ORDER BY COLUMN_A NULLS FIRST, COLUMN_B;