2016-04-28 80 views
0

對不起,我似乎有一點心理障礙。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 

部分和標題的數量是動態的,所以我不能真正編碼任何東西。

+1

標題的數量不是問題 - 它們的數量可以是任何東西,它們可以是有序的,空值可以顯示在底部。但事先未知的部分數量是一個問題。你不能用普通的SQL來做到這一點,你需要動態的SQL。舉一個例子(當輸出列的數量已知時),請參閱我的解決方案,以解決這個堆棧溢出問題(在頁面底部):http://stackoverflow.com/questions/36803771/need-to-arrange-員工的名字,爲每他們的城市列/按36823614#36823614 – mathguy

回答

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