add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE dbo.SalesData(Name varchar(32), Sales int, Date date);

INSERT dbo.SalesData(Name, Sales, Date) VALUES
(N'Peter', 1, '20220101'),
(N'Ben', 2, '20220102'),
(N'Sally', 3, '20220101'),
(N'Ben', 2, '20220202'),
(N'Peter', 1, '20220201'),
(N'Sally', 2, '20220202'),
(N'Peter', 1, '20220301'),
(N'Ben', 2, '20220302'),
(N'Sally', 2, '20220302');
9 rows affected
DECLARE @today date = GETDATE();
DECLARE @yearstart date = DATEFROMPARTS(YEAR(@today), 1, 1);

;WITH Days([day]) AS
(
SELECT @yearstart UNION ALL
SELECT DATEADD(DAY, 1, [day]) FROM Days
WHERE [day] < @today
),
AllDatesPerPerson AS
(
SELECT Days.[day], sd.Name FROM Days
CROSS JOIN (SELECT DISTINCT Name FROM dbo.SalesData
WHERE Date >= @yearstart) AS sd
)
SELECT dpp.Name, dpp.[day], COALESCE(SUM(sd.Sales) OVER
(PARTITION BY dpp.Name ORDER BY dpp.[day] ROWS UNBOUNDED PRECEDING),0)
FROM AllDatesPerPerson AS dpp
LEFT OUTER JOIN dbo.SalesData AS sd
ON dpp.Name = sd.Name AND sd.Date = dpp.[day]
ORDER BY dpp.Name, dpp.[day]
OPTION (MAXRECURSION 366); -- covers up to Dec 31 even on leap years
Name day (No column name)
Ben 2022-01-01 0
Ben 2022-01-02 2
Ben 2022-01-03 2
Ben 2022-01-04 2
Ben 2022-01-05 2
Ben 2022-01-06 2
Ben 2022-01-07 2
Ben 2022-01-08 2
Ben 2022-01-09 2
Ben 2022-01-10 2
Ben 2022-01-11 2
Ben 2022-01-12 2
Ben 2022-01-13 2
Ben 2022-01-14 2
Ben 2022-01-15 2
Ben 2022-01-16 2
Ben 2022-01-17 2
Ben 2022-01-18 2
Ben 2022-01-19 2
Ben 2022-01-20 2
Ben 2022-01-21 2
Ben 2022-01-22 2
Ben 2022-01-23 2
Ben 2022-01-24 2
Ben 2022-01-25 2
Ben 2022-01-26 2
Ben 2022-01-27 2
Ben 2022-01-28 2
Ben 2022-01-29 2
Ben 2022-01-30 2
Ben 2022-01-31 2
Ben 2022-02-01 2
Ben 2022-02-02 4
Ben 2022-02-03 4
Ben 2022-02-04 4
Ben 2022-02-05 4
Ben 2022-02-06 4
Ben 2022-02-07 4
Ben 2022-02-08 4
Ben 2022-02-09 4
Ben 2022-02-10 4
Ben 2022-02-11 4
Ben 2022-02-12 4
Ben 2022-02-13 4
Ben 2022-02-14 4
Ben 2022-02-15 4
Ben 2022-02-16 4
Ben 2022-02-17 4
Ben 2022-02-18 4
Ben 2022-02-19 4
Ben 2022-02-20 4
Ben 2022-02-21 4
Ben 2022-02-22 4
Ben 2022-02-23 4
Ben 2022-02-24 4
Ben 2022-02-25 4
Ben 2022-02-26 4
Ben 2022-02-27 4
Ben 2022-02-28 4
Ben 2022-03-01 4
Ben 2022-03-02 6
Ben 2022-03-03 6
Ben 2022-03-04 6
Ben 2022-03-05 6
Ben 2022-03-06 6
Ben 2022-03-07 6
Ben 2022-03-08 6
Ben 2022-03-09 6
Ben 2022-03-10 6
Ben 2022-03-11 6
Ben 2022-03-12 6
Ben 2022-03-13 6
Ben 2022-03-14 6
Ben 2022-03-15 6
Ben 2022-03-16 6
Ben 2022-03-17 6
Ben 2022-03-18 6
Ben 2022-03-19 6
Ben 2022-03-20 6
Ben 2022-03-21 6
Ben 2022-03-22 6
Ben 2022-03-23 6
Ben 2022-03-24 6
Ben 2022-03-25 6
Ben 2022-03-26 6
Ben 2022-03-27 6
Ben 2022-03-28 6
Ben 2022-03-29 6
Ben 2022-03-30 6
Ben 2022-03-31 6
Ben 2022-04-01 6
Peter 2022-01-01 1
Peter 2022-01-02 1
Peter 2022-01-03 1
Peter 2022-01-04 1
Peter 2022-01-05 1
Peter 2022-01-06 1
Peter 2022-01-07 1
Peter 2022-01-08 1
Peter 2022-01-09 1
Peter 2022-01-10 1
Peter 2022-01-11 1
Peter 2022-01-12 1
Peter 2022-01-13 1
Peter 2022-01-14 1
Peter 2022-01-15 1
Peter 2022-01-16 1
Peter 2022-01-17 1
Peter 2022-01-18 1
Peter 2022-01-19 1
Peter 2022-01-20 1
Peter 2022-01-21 1
Peter 2022-01-22 1
Peter 2022-01-23 1
Peter 2022-01-24 1
Peter 2022-01-25 1
Peter 2022-01-26 1
Peter 2022-01-27 1
Peter 2022-01-28 1
Peter 2022-01-29 1
Peter 2022-01-30 1
Peter 2022-01-31 1
Peter 2022-02-01 2
Peter 2022-02-02 2
Peter 2022-02-03 2
Peter 2022-02-04 2
Peter 2022-02-05 2
Peter 2022-02-06 2
Peter 2022-02-07 2
Peter 2022-02-08 2
Peter 2022-02-09 2
Peter 2022-02-10 2
Peter 2022-02-11 2
Peter 2022-02-12 2
Peter 2022-02-13 2
Peter 2022-02-14 2
Peter 2022-02-15 2
Peter 2022-02-16 2
Peter 2022-02-17 2
Peter 2022-02-18 2
Peter 2022-02-19 2
Peter 2022-02-20 2
Peter 2022-02-21 2
Peter 2022-02-22 2
Peter 2022-02-23 2
Peter 2022-02-24 2
Peter 2022-02-25 2
Peter 2022-02-26 2
Peter 2022-02-27 2
Peter 2022-02-28 2
Peter 2022-03-01 3
Peter 2022-03-02 3
Peter 2022-03-03 3
Peter 2022-03-04 3
Peter 2022-03-05 3
Peter 2022-03-06 3
Peter 2022-03-07 3
Peter 2022-03-08 3
Peter 2022-03-09 3
Peter 2022-03-10 3
Peter 2022-03-11 3
Peter 2022-03-12 3
Peter 2022-03-13 3
Peter 2022-03-14 3
Peter 2022-03-15 3
Peter 2022-03-16 3
Peter 2022-03-17 3
Peter 2022-03-18 3
Peter 2022-03-19 3
Peter 2022-03-20 3
Peter 2022-03-21 3
Peter 2022-03-22 3
Peter 2022-03-23 3
Peter 2022-03-24 3
Peter 2022-03-25 3
Peter 2022-03-26 3
Peter 2022-03-27 3
Peter 2022-03-28 3
Peter 2022-03-29 3
Peter 2022-03-30 3
Peter 2022-03-31 3
Peter 2022-04-01 3
Sally 2022-01-01 3
Sally 2022-01-02 3
Sally 2022-01-03 3
Sally 2022-01-04 3
Sally 2022-01-05 3
Sally 2022-01-06 3
Sally 2022-01-07 3
Sally 2022-01-08 3
Sally 2022-01-09 3
Sally 2022-01-10 3
Sally 2022-01-11 3
Sally 2022-01-12 3
Sally 2022-01-13 3
Sally 2022-01-14 3
Sally 2022-01-15 3
Sally 2022-01-16 3
Sally 2022-01-17 3
Sally 2022-01-18 3
Sally 2022-01-19 3
Sally 2022-01-20 3
Sally 2022-01-21 3
Sally 2022-01-22 3
Sally 2022-01-23 3
Sally 2022-01-24 3
Sally 2022-01-25 3
Sally 2022-01-26 3
Sally 2022-01-27 3
Sally 2022-01-28 3
Sally 2022-01-29 3
Sally 2022-01-30 3
Sally 2022-01-31 3
Sally 2022-02-01 3
Sally 2022-02-02 5
Sally 2022-02-03 5
Sally 2022-02-04 5
Sally 2022-02-05 5
Sally 2022-02-06 5
Sally 2022-02-07 5
Sally 2022-02-08 5
Sally 2022-02-09 5
Sally 2022-02-10 5
Sally 2022-02-11 5
Sally 2022-02-12 5
Sally 2022-02-13 5
Sally 2022-02-14 5
Sally 2022-02-15 5
Sally 2022-02-16 5
Sally 2022-02-17 5
Sally 2022-02-18 5
Sally 2022-02-19 5
Sally 2022-02-20 5
Sally 2022-02-21 5
Sally 2022-02-22 5
Sally 2022-02-23 5
Sally 2022-02-24 5
Sally 2022-02-25 5
Sally 2022-02-26 5
Sally 2022-02-27 5
Sally 2022-02-28 5
Sally 2022-03-01 5
Sally 2022-03-02 7
Sally 2022-03-03 7
Sally 2022-03-04 7
Sally 2022-03-05 7
Sally 2022-03-06 7
Sally 2022-03-07 7
Sally 2022-03-08 7
Sally 2022-03-09 7
Sally 2022-03-10 7
Sally 2022-03-11 7
Sally 2022-03-12 7
Sally 2022-03-13 7
Sally 2022-03-14 7
Sally 2022-03-15 7
Sally 2022-03-16 7
Sally 2022-03-17 7
Sally 2022-03-18 7
Sally 2022-03-19 7
Sally 2022-03-20 7
Sally 2022-03-21 7
Sally 2022-03-22 7
Sally 2022-03-23 7
Sally 2022-03-24 7
Sally 2022-03-25 7
Sally 2022-03-26 7
Sally 2022-03-27 7
Sally 2022-03-28 7
Sally 2022-03-29 7
Sally 2022-03-30 7
Sally 2022-03-31 7
Sally 2022-04-01 7
Warning: Null value is eliminated by an aggregate or other SET operation.