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.