-1

下面是我的EMP表格,其中包含一些示例数据

EMPNAME | WORK_DATA | WORK_HOURS
---------------------------------
abc     | 01-SEP-13 |     9
xyz     | 01-SEP-13 |     8
abc     | 02-SEP-13 |     8
xyz     | 02-SEP-13 |     7
abc     | 01-OCT-13 |     5
xyz     | 01-OCT-13 |     7
abc     | 02-OCT-13 |     8
xyz     | 02-OCT-13 |     7

现在我希望它使用 select 语句在 oracle 中显示

EMPNAME | SEP_MONTH_WORKING_HOURS | OCT_MONTH_WORKING_HOURS 
-----------------------------------------------------------
abc     | 17                      | 13
xyz     | 15                      | 14

第二个疑问是:

EMPNAME | SEP_MONTH_WORKING_HOURS | RANK 
-----------------------------------------------------------
xyz     | 15                      | 1
abc     | 17                      | 2
4

1 回答 1

2

这应该使用extract

select empname, 
  sum(case when  extract(month from work_data) = 9 then work_hours end) sept_work_hours,
  sum(case when  extract(month from work_data) = 10 then work_hours end) oct_work_hours
from emp
group by empname

请注意,9 月的 abcs 员工应该是 17 岁而不是 19 岁。

于 2013-10-11T12:31:49.970 回答