在oracle中,如何将数据排序到右侧而不是底部?

在oracle中,如何将数据排序到右侧而不是底部?,oracle,oracle10g,pivot,Oracle,Oracle10g,Pivot,假设我桌上有这些数据 select * from user.weekly_job; 得到: 但我需要员工提供的所有数据,其中包含每种工作类型的发生情况,如下所示: Staff | 1 | 2 | 3 | 4 | 5 A | 1 | 1 | 2 | 0 | 1 B | 0 | 2 | 1 | 0 | 1 如何使用oracle query执行此操作?如果您有固定数量的JobType值: select STAFF, SUM(CASE WHEN JobType=1 TH

假设我桌上有这些数据

select * from user.weekly_job;
得到:

但我需要员工提供的所有数据,其中包含每种工作类型的发生情况,如下所示:

Staff | 1 | 2 | 3 | 4 | 5
A     | 1 | 1 | 2 | 0 | 1
B     | 0 | 2 | 1 | 0 | 1

如何使用oracle query执行此操作?

如果您有固定数量的JobType值:

select STAFF,
       SUM(CASE WHEN JobType=1 THEN 1 ELSE 0 END) as "1",
       SUM(CASE WHEN JobType=2 THEN 1 ELSE 0 END) as "2",
       SUM(CASE WHEN JobType=3 THEN 1 ELSE 0 END) as "3",
       SUM(CASE WHEN JobType=4 THEN 1 ELSE 0 END) as "4",
       SUM(CASE WHEN JobType=5 THEN 1 ELSE 0 END) as "5"
FROM t
GROUP BY STAFF

按每种作业类型分组后,我有1万多个数据,但php需要很长时间才能完成这项工作,所以我需要先用oracle的方式进行比较
select STAFF,
       SUM(CASE WHEN JobType=1 THEN 1 ELSE 0 END) as "1",
       SUM(CASE WHEN JobType=2 THEN 1 ELSE 0 END) as "2",
       SUM(CASE WHEN JobType=3 THEN 1 ELSE 0 END) as "3",
       SUM(CASE WHEN JobType=4 THEN 1 ELSE 0 END) as "4",
       SUM(CASE WHEN JobType=5 THEN 1 ELSE 0 END) as "5"
FROM t
GROUP BY STAFF