2016-10-13 38 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.我使用第三方应用程序在我的表中插入数据,这是它如何插入它。我的客户需要对数据进行改进。否则我永远不会像这样设计。谢谢您的帮助。现在给它一个去吧,如果作品会标记为正确的答案, –