SQL到';集团';某些记录

SQL到';集团';某些记录,sql,oracle11g,group-by,Sql,Oracle11g,Group By,我不完全确定这在SQL中是否可行(我绝不是专家) 我在表A中有如下数据行: 我希望有一个SQL输出,将所有记录“分组”在一起,在哪里活动=D.输出结果需要如下表所示: 任何“合并”活动都将被分组为“合并”。在本例中,这将是A和B 我开始了 select cycle_start, cycle_end, activity_start, activity_end, case when (Activity="D") then "D" else "Merged" end 但是我

我不完全确定这在SQL中是否可行(我绝不是专家)

我在表A中有如下数据行:

我希望有一个SQL输出,将所有记录“分组”在一起,在哪里活动=D.输出结果需要如下表所示:

任何“合并”活动都将被分组为“合并”。在本例中,这将是A和B

我开始了

select 
  cycle_start,
  cycle_end,
  activity_start,
  activity_end,
  case when (Activity="D") then "D" else "Merged" end

但是我很难获得正确的聚合

是的,您可以通过
组中的
案例
来实现这一点:

select cycle_start, cycle_end,
       min(activity_start) as activity_start, 
       max(activity_end) as activity_end, 
       (case when Activity = 'D' then 'D' else 'Merged' end)
from table t
group by cycle_start, cycle_end,
         (case when Activity = 'D' then 'D' else 'Merged' end)

是的,您可以通过
分组方式中的
案例
执行此操作:

select cycle_start, cycle_end,
       min(activity_start) as activity_start, 
       max(activity_end) as activity_end, 
       (case when Activity = 'D' then 'D' else 'Merged' end)
from table t
group by cycle_start, cycle_end,
         (case when Activity = 'D' then 'D' else 'Merged' end)

是的,您可以通过
分组方式中的
案例
执行此操作:

select cycle_start, cycle_end,
       min(activity_start) as activity_start, 
       max(activity_end) as activity_end, 
       (case when Activity = 'D' then 'D' else 'Merged' end)
from table t
group by cycle_start, cycle_end,
         (case when Activity = 'D' then 'D' else 'Merged' end)

是的,您可以通过
分组方式中的
案例
执行此操作:

select cycle_start, cycle_end,
       min(activity_start) as activity_start, 
       max(activity_end) as activity_end, 
       (case when Activity = 'D' then 'D' else 'Merged' end)
from table t
group by cycle_start, cycle_end,
         (case when Activity = 'D' then 'D' else 'Merged' end)

@用户2407394。谢谢。@user2407394。谢谢。@user2407394。谢谢。@user2407394。非常感谢。