1

假设我的桌子上有这些数据

select * from user.weekly_job;

得到 :

Staff | JobType
A | 1
A | 3
A | 5
A | 2
A | 3
B | 3
B | 5
B | 2
B | 2

但我需要来自员工的所有数据,其中包含每种工作类型的出现,如下所示:

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

如何用 oracle 查询做到这一点?

4

1 回答 1

2

如果您有固定数量的 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

SQLFiddle 演示

于 2013-08-23T07:37:05.660 回答