SQLize Online / PHPize Online

A A A
Share   Donate   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 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? Need help? Ask professionals on our Telegram channel!
Join the channel
Your quersion is posted.
Join our Telegram channel and get answers.
Send
Copy