枢轴行到列

时间:2019-05-09 15:10:16

标签: sql oracle pivot

我正在尝试将“行”透视到列。我使用了Pivot函数,但是当我尝试在实际查询中使用它时,却给了我一个错误。

如果我分开运行,这两个代码都可以很好地运行,它给了我正确的输出
1)

(
 SELECT N.PROJECTID, 
    MAX(CASE WHEN N.QUESTIONID =  '1' THEN N.ANSWER END ) QUESTION1,
    MAX(CASE WHEN N.QUESTIONID =  '2' THEN N.ANSWER END ) QUESTION2,
    MAX(CASE WHEN N.QUESTIONID =  '3' THEN N.ANSWER END ) QUESTION3,
    MAX(CASE WHEN N.QUESTIONID =  '4' THEN N.ANSWER END ) QUESTION4,
    MAX(CASE WHEN N.QUESTIONID =  '5' THEN N.ANSWER END ) QUESTION5

 FROM  PETE.VW_NOMCRQUESTIONNAIRE  N 
 GROUP BY N.PROJECTID
  );

2)

 SELECT * FROM 
 ( 
 SELECT PROJECTID, QUESTIONID, ANSWER FROM PETE.VW_NOMCRQUESTIONNAIRE
  )

  PIVOT
   (
  Max(answer)
 FOR QUESTIONID IN (1 AS QUESTION_1,2 AS QUESTION_2,3 AS QUESTION_3,4 AS 
QUESTION_4,5 AS QUESTION_5)
 );

我想在具有多个联接的实际查询中使用两者。它给我一个类似的错误

ORA-00913:值太多 00913. 00000-“值太多” *原因:
*行动: 第67行错误:5列

我知道发生错误的原因,因为枢轴列的输出数量不同。

有什么方法可以在查询中使用它吗?

我想看到其余数据的行到列值。我将不胜感激。

0 个答案:

没有答案