A Microsoft extension to the ANSI SQL language that includes procedural programming, local variables, and various support functions.
Please check if this solution solve your needs:
;With MyCTE AS(
select
prop_id, min_calc_date, max_calc_date,
Sum(fuel_rate) total
from meter1
group by prop_id, min_calc_date, max_calc_date
)
SELECT
prop_id, min_calc_date
, max_calc_date = ISNULL(DATEADD(DAY,-1, LEAD (min_calc_date) OVER (PARTITION BY prop_id order by prop_id, min_calc_date, max_calc_date)), max_calc_date)
, total
FROM MyCTE
GO
Note! This solution based on assumptions. For example it assume that your ranges are not overlapping. overlapping ranges make the scenario more complex. It assume that you works with DATEs and not DATE and Time (which mean you should change the DDL code and use DATE for the table) - using this assumption I could use "DAY" in order to get the previous max value.