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
Share      Blog   Popular

SQLize.online is a free online SQL environment for quickly running, experimenting with and sharing code. You can run your SQL code on top of the most popular RDBMS including MySQL, MariaDB, SQLite, PostgreSQL, Oracle and Microsoft SQL Server.

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 ChatGPT!

Copy Clear