我有一个地址可以有多个旅程的数据,像这样:
我想按每次旅程划分地址(“旅程的开始”到“旅程的结束”,中间的所有“旅程的一部分”构成一个旅程)并汇总费用,因此每个地址可以有多行根据旅程的次数,像这样:
我似乎无法弄清楚解决此问题所需的逻辑。任何帮助或指示,我们将不胜感激。
答案 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