将表格中的值转换为列标题

时间:2015-08-20 13:15:18

标签: sql oracle ora-00923

我试图从表格的行中获取值并将其转换为列标题。例如,我的表目前看起来像这样:

 _id   question_id   category
----- ------------- ----------
  1    767           back
  1    768           dev
  2    768           dev

我希望它看起来像这样:

 _id   767      768
----- -------- -----
  1    back     dev
  2    (null)   dev

我在这里使用CASE/WHEN找到了解决方案,但在尝试实施解决方案时遇到了错误。我的代码如下。在这种情况下,我在第6行的末尾收到ORA-00923: FROM keyword not found where expected错误。我该如何解决这个问题?

SELECT
 msr._id,
 ans.question_id,
 ans.category,

 CASE ans.question_id WHEN '767' THEN ans.category END '767',
 CASE ans.question_id WHEN '768' THEN ans.category END '768'

FROM table1 t1
LEFT OUTER JOIN table2 t2
ON t1._id = t2._id

WHERE t2.question_id in (767,768) AND t2.assigned_to not in ('Smith, John')
 AND t1.request_type_id in (288,289) and t1.status_id not in (0, 11);

1 个答案:

答案 0 :(得分:1)

'是字符串文字的分隔符。 "用于列名。因此:

 CASE ans.question_id WHEN '767' THEN ans.category END "767",
 CASE ans.question_id WHEN '768' THEN ans.category END "768"