2016-10-13 23 views
0

問題がピボットまたはトランスポーズに関連しているかどうかわかりませんでしたので、タイトルに両方を書きました。以下はOracleのSQLクエリのピボット/トランスポーズ

ここ

SELECT QUESTION_ID, 
     RESPONDENT, 
     ANSWER 
FROM SURVEY 

(OracleのAPEXレポートでそれを使用して)私のクエリで結果である:

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は転置より少し一般的ですが、転置はアプリケーションの1つです。 PIVOTは集約演算であるため、必要と思われない場合でも集計関数(MI​​Nや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などで実行する必要があります)。しかし、90問の質問では、なぜ90列のフォーマットが必要でしょうか? – mathguy

+0

idsは1から90までです。私はテーブルにデータを挿入するためにサードパーティアプリケーションを使用しました。これはそれを挿入する方法です。私の顧客はデータを洗練する必要があります。さもなければ、私はこのようにデザインしないだろう。助けてくれてありがとう。それが今すぐ行けば、それが正解とマークされれば、 –