SQLize Online / PHPize Online  /  SQLtest Online

A A A
Share      Blog   Popular
Copy Format Clear
CREATE TABLE Source ( Name varchar(64), Year int, Month int, Value int ); INSERT INTO Source VALUES ('Alex', 2020, 1, 1000), ('Alex', 2020, 3, 300), ('Budi', 2020, 3, 300); WITH Months AS ( SELECT Year, Month, Name FROM (VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10), (11), (12)) AS Months(Month) CROSS JOIN (VALUES (2020)) AS years(Year) CROSS JOIN (SELECT DISTINCT Name FROM Source) AS Names ) SELECT Months.Year, Months.Month, Months.Name, COALESCE(Source.Value, 0) AS Value, SUM(COALESCE(Source.Value, 0)) OVER(PARTITION BY Months.Name ORDER BY Months.Year, Months.Month) AS cumulativeSum FROM Months LEFT JOIN Source ON Source.Year = Months.Year AND Source.Month = Months.Month AND Source.Name = Months.Name ;
Stuck with a problem? Got Error? Ask ChatGPT!
Copy Clear