2016-10-13 6 views
0

Ich wusste nicht, ob mein Problem mit Schwenk oder Transponieren verwandt ist, deshalb habe ich beide im Titel geschrieben.Pivot/Transponieren in SQL-Abfrage in Oracle

Im Folgenden finden Sie meine Frage (es ist in einem Oracle APEX Report verwendet wird)

SELECT QUESTION_ID, 
     RESPONDENT, 
     ANSWER 
FROM SURVEY 

Hier ist das Ergebnis:

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

Das Ergebnis, das ich will, ist dies:

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

Wie kann dies erreicht werden?

+0

PIVOT ist etwas allgemeiner als Transponieren, aber ja, Transponieren ist eine der Anwendungen. Da PIVOT eine Aggregatoperation ist, müssen Sie eine Aggregatfunktion (wie MIN oder MAX) verwenden, auch wenn es nicht erforderlich scheint, wie die MIN (Antwort) in der Lösung, die ich anbot. – mathguy

Antwort

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

danke, wird das funktionieren, wenn ich 90 Frage-IDs habe? –

+0

Vielleicht. Die Anzahl der Fragen muss vorher bekannt sein, sie kann nicht variabel sein. Und die 'question_id' muss auch bekannt sein (zB sollte sie von 1 bis 90 oder vielleicht von 3001 bis 3090 usw. laufen) - die IDs müssen bekannt sein, wenn Sie die Anfrage schreiben. Warum möchten Sie bei 90 Fragen ein Format mit 90 Spalten? – mathguy

+0

Die IDs sind bekannt, von 1 bis 90. Ich habe eine Anwendung von Drittanbietern verwendet, um Daten in meine Tabelle einzufügen, und so wurde es eingefügt. und mein Kunde braucht eine Verfeinerung der Daten. sonst würde ich nie so aussehen. Danke für die Hilfe. es jetzt versuchen, wenn Werke als die richtige Antwort markieren, –