Here is a solution. Since there were many rows in the sample data, I've truncated the INSERT statements.
CREATE TABLE #tempie (Month char(3) NOT NULL,
Amount decimal(20,2) NOT NULL,
Billdate date NOT NULL PRIMARY KEY)
INSERT #tempie(Month, Amount, Billdate)
VALUES ('Apr', 53710520.67, '1-Apr-23'),
('Apr', 70191273.32, '2-Apr-23'),
('Apr', 41530766.96, '3-Apr-23'),
('Apr', 36528427.09, '4-Apr-23'),
...
('Jun', 30032922.4, '25-Jun-24'),
('Jun', 34834711.24, '28-Jun-24'),
('May', 23067946.65, '13-May-24')
go
; WITH prepare AS (
SELECT rowno = isnull((Month(Billdate) + 8) % 12, 14),
Overall = isnull(datename(Month, Billdate), 'FY Total'),
"23-24" = SUM(CASE WHEN Billdate >= '20230401' AND Billdate < '20240401' THEN Amount END),
"24-25" = SUM(CASE WHEN Billdate >= '20240401' AND Billdate < '20250401' THEN Amount END)
FROM #tempie
GROUP BY GROUPING SETS ((datename(Month, Billdate), Month(Billdate)), ())
UNION ALL
SELECT rowno = 13, Overall = 'YTD Total',
"23-24" = SUM(CASE WHEN Billdate >= '20230401' AND
Billdate < dateadd(YEAR, -1, dateadd(DAY, 1, eomonth(sysdatetime())))
THEN Amount
END),
"23-24" = SUM(CASE WHEN Billdate >= '20240401' AND
Billdate < dateadd(DAY, 1, eomonth(sysdatetime()))
THEN Amount
END)
FROM #tempie
)
SELECT Overall, "23-24", "24-25"
FROM prepare
ORDER BY rowno
go
DROP TABLE #tempie