我有一个工程师名称和日期作为浮动的表格。
我做了以下
select t.eng_id, t.createdat
from JOBS t
where t.ENG_ID in (SELECT ENG_NAME From HOSEFLEX.ENGINEERS)
让我
1 bungle 40767.8305520833
2 bungle 40767.7657221412
3 Shaun 40825.6510914583
4 Shaun 40767.8287994213
5 Shaun 40825.6041891204
6 Shaun 40908.8024086458
我将浮动转换为年月
select eng_id,
TO_CHAR( to_date('12/30/1899', 'MM/DD/YYYY') + t.createdat , 'YYYY-MON')
from JOBS t
让我
1 bungle 2011-AUG
2 bungle 2011-AUG
3 Shaun 2011-OCT
4 Shaun 2011-AUG
5 Shaun 2011-OCT
6 Shaun 2011-DEC
但我想要的是每个工程师每月的参赛人数
Eng Name 2011-Aug 2011-OCT 2011-DEC
bungle 2 0 0
Shaun 1 2
如果可能我希望能够设置开始和结束日期来过滤
提前致谢
答案 0 :(得分:1)
工程师小组:
select t.eng_id, count(t.createdat)
from JOBS t
where t.ENG_ID in (SELECT ENG_NAME From HOSEFLEX.ENGINEERS)
and t.createdat > 1-DEC-2011 and t.createdat < 1-JAN-2012 -- example of filter by date
group by t.ENG_ID
(您不能按工程师分组并显示日期。)
更新:
您可以做的是按月和年分组,然后显示它。
select t.eng_id, Year(t.createdat), Month(t.createdat), count(t.createdat)
from JOBS t
where t.ENG_ID in (SELECT ENG_NAME From HOSEFLEX.ENGINEERS)
and t.createdat > 1-DEC-2011 and t.createdat < 1-JAN-2012
group by t.ENG_ID, Year(t.createdat), Month(t.createdat)
答案 1 :(得分:1)
简短回答 - 您可以在计算时使用分组。因此,您可以使用NVL和case / when以及其他计算和函数。