我有一个Oracle数据库,我需要一个查询来进行报告.在我的表中,我有action_types和动作的日期.我想要计算某些组中的操作数量,并显示该类型的最新操作.
所以我想要的是类似的东西
Group Number Date
Administrative 3 01/02/2015
User 1 01/03/2015
View-Only 2 01/04/2015
Run Code Online (Sandbox Code Playgroud)
问题是每个组都包含多个action_types,因此表本身看起来像
Action_Type Date
01 01/02/2015
04 01/03/2015
02 01/02/2015
03 01/02/2015
05 01/03/2015
06 01/04/2015
Run Code Online (Sandbox Code Playgroud)
如果操作01,02,03都是管理操作,则04是用户操作,05和06是仅查看操作.
我可以编写一个查询,它将返回我想要的单行 - 单个组的编号和最近日期,但我想要一个将所有组放在一起的查询,每个组都有自己的行,如上所述.这可能吗?
我想你只想要一个case
分组声明:
select (case when Action_Type in ('01', '02', '03') then 'Administrative'
when Action_Type in ('04') then 'User'
when Action_Type in ('05', '06') then 'View-Only'
else 'Unknown'
end) as Action_Group, count(*), max(date)
from actions a
group by (case when Action_Type in ('01', '02', '03') then 'Administrative'
when Action_Type in ('04') then 'User'
when Action_Type in ('05', '06') then 'View-Only'
else 'Unknown'
end) ;
Run Code Online (Sandbox Code Playgroud)
但是,我建议您为包含所需分组的操作类型创建一个引用表(如果您还没有这样的表).
归档时间: |
|
查看次数: |
45 次 |
最近记录: |