2016-10-13 72 views
0

我不知道我的問題是否與旋轉或移調有關,所以這就是爲什麼我在標題中都寫入了兩者。Oracle中的SQL查詢中的數據透視/轉置

下面是我的查詢(在Oracle APEX報表使用它)

SELECT QUESTION_ID, 
     RESPONDENT, 
     ANSWER 
FROM SURVEY 

下面是結果:

Question_ID Respondent Answer 
1   A   test1 
2   A   test2 
3   A   test3 
1   B   test4 
2   B   test5 
3   B   test6 

我想結果是這樣的:

    Question 
Respondant 1  2  3 
A   test1 test2 test3 
B   test4 test5 test6 

這怎麼能實現?

+0

PIVOT比轉置更普遍,但是,轉置是應用程序之一。因爲PIVOT是一個集合操作,所以即使它看起來不需要,也必須使用集合函數(如MIN或MAX),因爲我提供的解決方案中的MIN(答案)是。 – mathguy

回答

1
select * 
from table_name 
pivot (min(answer) for question_id in (1 as q1, 2 as q2, 3 as q3)); 
+0

謝謝,如果我有90個問題ID,這項工作嗎? –

+0

或許。問題的數量必須事先知道,但不能變。並且'question_id'也必須是已知的(例如,它應該從1運行到90,或者從3001運行到3090等等 - 當你編寫查詢時必須知道id)。但是,如果有90個問題,爲什麼要使用90列的格式? – mathguy

+0

ids是已知的,從1到90.我使用第三方應用程序在我的表中插入數據,這是它如何插入它。我的客戶需要對數據進行改進。否則我永遠不會像這樣設計。謝謝您的幫助。現在給它一個去吧,如果作品會標記爲正確的答案, –