Hi! Could we please enable some services and cookies to improve your experience and our website?

SQLize Online / PHPize Online  /  SQLtest Online

A A A
Login    Share code      Blog   FAQ

Online Sandbox for SQL and PHP: Write, Run, Test, and Share SQL Queries and PHP Code

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 Calendar AS ( -- generate Year, Month table for each Name 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 Calendar.Year, Calendar.Month, Calendar.Name, COALESCE(Source.Value, 0) AS Value, SUM(COALESCE(Source.Value, 0)) OVER(PARTITION BY Calendar.Name ORDER BY Calendar.Year, Calendar.Month) AS cumulativeSum FROM Calendar LEFT JOIN Source ON Source.Year = Calendar.Year AND Source.Month = Calendar.Month AND Source.Name = Calendar.Name ;

Stuck with a problem? Got Error? Ask AI support!

Copy Clear