Oracle - 如何查询2个表格来创建列和行
问题描述:
对不起,我似乎有一点心理障碍。Oracle - 如何查询2个表格来创建列和行
我有一个表,看起来像这样
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
部分和标题的数量是动态的,所以我不能真正编码任何东西。
答
这不能没有动态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
标题的数量不是问题 - 它们的数量可以是任何东西,它们可以是有序的,空值可以显示在底部。但事先未知的部分数量是一个问题。你不能用普通的SQL来做到这一点,你需要动态的SQL。举一个例子(当输出列的数量已知时),请参阅我的解决方案,以解决这个堆栈溢出问题(在页面底部):http://*.com/questions/36803771/need-to-arrange-员工的名字,为每他们的城市列/按36823614#36823614 – mathguy