簡體   English   中英

如何按月查詢累計和期間

[英]How to query cumulative sum period by month

我對這樣的表源有疑問:

在此處輸入圖像描述

表中可用的月份僅來自列月份,沒有 4 月、5 月、6 月等。

我需要創建一個視圖來創建“年初至今”表,如下所示:

在此處輸入圖像描述

我需要查看 2020 年 1 月至 12 月的所有月份,其值基於表源。

VALUE COLUMN 由 Source 填寫,同月,但由於 April 無法從源獲得,所以它自動設置為 0,其他相同

對於 CUMULATIVE VALUE COLUMN,由上個月值的總和填充

我在查詢時嘗試過使用案例,但如果我有很多名稱而不是動態的,那就不簡單了

您可以使用下一個 SQL 構造:

 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 ;

MSSQL累計和

查詢使用 CTE 表達式生成日歷表和 window function SUM 按名稱分區計算累積值

我很高興看到這個查詢。

實際上,我正在 mysql 中尋找相同的查詢。

在 mysql 中,查詢不支持。

請問可以在 MYSQL 做嗎?

非常感謝 Pravallik

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM