mosdt dbms поддерживают аналитическую функцию first_value и last_value, которую я использовал, чтобы взять мудрое имя 1-е значение от станции и последнее значение на станцию и сравнить их для получения в выборке для повторного разбора
with reimbursement as
(
select 'Hari' as name, 'Bengaluru' as From_station , 'Hyderabad' as To_station, 2500 as amount
union all
select 'Hari','Hyderabad','Bengaluru',2600
union all
select 'Raju','Chennai','Pune',3400
union all
select 'Raju','Pune','Hyderabad',2000
union all
select 'Kiran','Kerala','Chennai',2300
union all
select 'Kiran','Chennai','Kerala',3200
),cte as
(
select *,row_number()over(partition by name order by From_station) rn
from reimbursement
), cte1 as
(select name,amount,
FIRST_VALUE(From_station) over(partition by name order by rn) as f,
LAST_VALUE(To_station) over(partition by name order by rn desc) t
from cte
)select name , sum(amount) AS TOTAL
FROM reimbursement WHERE name IN (
select name
from cte1 where f=t
) GROUP BY NAME
демо oneline
name TOTAL
Hari 5100
Kiran 5500