Oracle - 如何查询2个表以创建列和行

时间:2016-04-28 22:18:12

标签: oracle

抱歉,我似乎有点精神障碍。

我有一张看起来像这样的表

SECTION_ID  |  TITLE
-------------------------
1             Section1
2             Section2
3             Section3

和另一个像这样的表

KPI TITLE   |  SECTION_ID
----------------------------
Title1         1
Title2         1
Title3         2
Title4         3
Title5         3
Title5         3

我想加入这两个表,所以它们看起来像这样

Section1 | Section2 | Section3
------------------------------
Title1     Title3     Title4
Title2                Title5
                      Title6

部分和标题的数量是动态的,因此我无法对任何内容进行任何编码。

1 个答案:

答案 0 :(得分:1)

这不能在没有动态SQL的情况下完成,也不能事先知道您的部分名称。如果您确实知道名称,那么您可以使用数据透视表执行类似操作。由于数据库汇总了数据,因此无法提供您要求的确切输出,但根据您尝试完成的操作,这可能会为您完成:

SELECT *
FROM 
(
    SELECT T1.TITLE, T2.KPI_TITLE
    FROM T1, T2
    WHERE T1.SECTION_ID = T2.SECTION_ID
)
PIVOT (
    LISTAGG(KPI_TITLE, ', ') WITHIN GROUP (ORDER BY KPI_TITLE)
    FOR TITLE IN ('Section1','Section2','Section3')
)

输出将是:

Section1        | Section2 | Section3
----------------------------------------------------
Title1, Title2     Title3     Title4, Title5, Title6