2015-04-03 28 views
0

我有一個表列,如Question_Id,Department_Id,Value。Oracle如何設置數據透視表SQL

這裏是我的數據:

enter image description here

enter image description here

我希望得到像這樣的表:

這裏是我的代碼:

SELECT * 
FROM (SELECT question_id, department_id, TO_NUMBER(value) 
     FROM my_pivot_table) 
     PIVOT (SUM(TO_NUMBER(value)) AS sum_quantity FOR (department_id) IN (11 AS a, 12 AS b, 13 AS c, 14 AS d, 5 as e)) 

ORDER BY question_id; 

我得到這個錯誤[R,但我不什麼是錯

ORA-01722: invalid number 
01722. 00000 - "invalid number" 
*Cause:  
*Action: 

編輯:

我發佈,我的值列是VARCHAR。所以我改變了我的代碼,但仍然沒有得到我的數據透視表。

+1

確保'value'的數據類型是數字,沒有必要寫在清單報價'(11 A,12 B,13 c,14 as d,5 as e)'應該有效。 – San 2015-04-03 07:21:16

+1

和一些示例數據? – 2015-04-03 07:22:27

+0

我改變了我的代碼。謝謝 – ispanak 2015-04-03 07:26:49

回答

0

看起來你需要移動括號:

SELECT * 
FROM (SELECT question_id, department_id, TO_NUMBER(value) 
     FROM my_pivot_table -- right parenthesis was here 
     PIVOT (SUM(TO_NUMBER(value)) AS sum_quantity 
       FOR (department_id) IN (11 AS a, 12 AS b, 13 AS c, 
        14 AS d, 5 as e))) -- and moved here 
ORDER BY question_id;