Oracle SQL:根据多个行条件拆分组

时间:2019-04-30 13:23:07

标签: sql oracle12c

我有一个地址可以有多个旅程的数据,像这样:

enter image description here

我想按每次旅程划分地址(“旅程的开始”到“旅程的结束”,中间的所有“旅程的一部分”构成一个旅程)并汇总费用,因此每个地址可以有多行根据旅程的次数,像这样:

enter image description here

我似乎无法弄清楚解决此问题所需的逻辑。任何帮助或指示,我们将不胜感激。

1 个答案:

答案 0 :(得分:2)

使用一个连续的总和将行标记为组,每当给定地址遇到Start of Journey行时就开始一个新的数字。然后使用它进行分组并获得总费用。

select address,sum(cost) 
from (select t.*
      --Replace OrderCol with a column that specifies row order
      ,sum(case when journey='Start of Journey' then 1 else 0 end) over(partition by address order by OrderCol) as grp 
      from tbl
     ) t
group by address,grp