使用PIVOT子句

时间:2013-10-28 00:09:08

标签: sql oracle oracle11g oracle-sqldeveloper

我需要帮助使用pivot子句创建表以包含每个Division_ID的平均工资,并使用employees2表中的数据将Division_ID用作Row,将Job_ID用作Column。

这是我的查询

SELECT * 
FROM ( 
  SELECT JOB_ID, DIVISION_ID, SALARY
  FROM employees2
  WHERE DIVISION_ID IN (1, 2, 3, 4, 5)
  )
PIVOT ( 
AVG(SALARY) FOR JOB_ID IN (1 AS ENG, 2 AS MGR, 3 AS PRE, 4 AS WOR, 5 AS TEC)
)
ORDER BY DIVISION _ID;

当我尝试执行语句

时出现以下错误
ORA-00933: SQL command not properly ended
00933. 00000 -  "SQL command not properly ended"
*Cause:    
*Action:
Error at Line: 6 Column: 3

以下是employees2表中的数据(注意它们只有5个JOB_ID)

employees2 table

最后,这是一个我的结果应该是什么样子的例子

example result

1 个答案:

答案 0 :(得分:1)

根据您的示例数据,您的查询正在检查int division_ids和job_ids,当它们显示为varchar个字段时。

这是一个工作版本:

SELECT * 
FROM ( 
  SELECT JOB_ID, DIVISION_ID, SALARY
  FROM employees2
  WHERE DIVISION_ID IN ('div1','div2')
  ) 
PIVOT ( 
  AVG(SALARY) FOR JOB_ID IN ('job1', 'job2')
) 
ORDER BY 1