首页 > 解决方案 > SQL根据数据按月计算汇总数据

问题描述

我有一张巨大的桌子,上面有几个月的产品订单历史。我想展平表格以将列作为日期字段,其中包含订购的总金额。见下表:

在此处输入图像描述

理想的输出是:

在此处输入图像描述

我已经尝试过案例陈述

Case when ReportMonth = '2021-07-01' then sum(total) end as '2021-07-01',
Case when ReportMonth = '2021-06-01' then sum(total) end as '2021-06-01',
Case when ReportMonth = '2021-05-01' then sum(total) end as '2021-05-01',
Case when ReportMonth = '2020-05-01' then sum(total) end as '2020-05-01',

但后来我得到空值和更多记录。

标签: sqlgroup-bynestedinner-joinsubtotal

解决方案


CASE考虑通过在内部运行语句来反转嵌套表达式SUM

SELECT 
     Parent_Org
    -- , ...other group columns
    , Category
    , SUM(CASE WHEN ReportMonth = '2021-07-01' THEN total END) AS '2021-07-01'
    , SUM(CASE WHEN ReportMonth = '2021-06-01' THEN total END) AS '2021-06-01'
    , SUM(CASE WHEN ReportMonth = '2021-05-01' then total END) AS '2021-05-01'
    , SUM(CASE WHEN ReportMonth = '2020-05-01' THEN total END) AS '2020-05-01'
FROM myTable
GROUP BY
     Parent_Org
    -- , ...other group columns
    , Category

推荐阅读