如何在MySQL中根据任务开始日期和结束日期计算每季度的值总和?

穆拉利

我有一个带有类型,开始日期,结束日期和金额的活动表。我想使用开始日期和结束日期来计算所有季度按类型分组的金额总和。

例如,如果我的StartDate和EndDate介于1月到3月之间,则应计算与该季度有关的所有记录的金额之和。

我想对其余记录执行相同的操作。

CREATE TABLE activity
(id int(11)
,Type varchar(10)
,StartDate date
,EndDate date
,Amount int(11)
);
                                                                                         
INSERT INTO activity VALUES
(1,'Type1','2021-01-15','2021-02-25',10000),
(2,'Type1','2021-01-25','2021-02-25',10000),
(3,'Type2','2021-08-05','2021-09-25',15000),
(4,'Type3','2021-10-15','2021-12-25',5000);

这是预期的输出。

预期的输出:

Type    T1      T2      T3      T4
1       2000    0       0       0
2       0       2000    0       0
3       0       0       0       3000


T1,T2,T3,T4 are quarters of Year

T1 -> Jan TO Mar
T2 -> April TO June
T3 -> July TO September
T4 -> October TO December

我试过查询。我已经在在线编辑器中给出了该查询。

这是带有示例数据的在线编辑器链接。

查询中我缺少什么以获取正确的响应?

蒂姆·比格莱森(Tim Biegeleisen)

您可以在日历表的帮助下满足此要求,在这种情况下,日历表将维护每个季度的日期范围:

SELECT
    a.Type,
    SUM(CASE WHEN quarter = 'T1' THEN a.Amount ELSE 0 END) AS T1,
    SUM(CASE WHEN quarter = 'T2' THEN a.Amount ELSE 0 END) AS T2,
    SUM(CASE WHEN quarter = 'T3' THEN a.Amount ELSE 0 END) AS T3,
    SUM(CASE WHEN quarter = 'T4' THEN a.Amount ELSE 0 END) AS T4
FROM Activity a
INNER JOIN
(
    SELECT 'T1' AS quarter, '2021-01-01' AS QuarterStart, '2021-04-01' AS QuarterEnd UNION ALL
    SELECT 'T2', '2021-04-01', '2021-07-01' UNION ALL
    SELECT 'T3', '2021-07-01', '2021-10-01' UNION ALL
    SELECT 'T4', '2021-10-01', '2022-01-01'
) q
    ON a.StartDate < q.QuarterEnd AND a.EndDate >= q.QuarterStart
GROUP BY
    a.Type;

以下演示链接的屏幕截图

演示版

请注意,我更改了样本数据,因为当前的Type 2数据实际上跨越了第二个季度和第三个季度,并且您并不清楚这种情况下会计的工作方式。因此,我将该数据的结束日期更改为2020-06-30,以确保该日期仅在第二季度。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Oracle-查找每月,每季度和每年的日期

来自分类Dev

如何从基于日期范围和表名的多表中选择数据(每季度)

来自分类Dev

如何根据开始日期和结束日期计算季节

来自分类Dev

从给定的季度 SQL 计算开始日期和结束日期

来自分类Dev

如何获取当前季度的开始日期和结束日期?

来自分类Dev

如何在tfs中创建具有开始日期和结束日期的任务?

来自分类Dev

如何在tfs中创建带有开始日期和结束日期的任务?

来自分类Dev

如何在Postgres上使用开始日期和结束日期以及季度生成系列

来自分类Dev

Ruby(/Rails) 日期 - 每两周和每季度的 DateTime 范围

来自分类Dev

每季度2个日期之间的差额

来自分类Dev

每周,每月,每季度以php为单位备份日期

来自分类Dev

每季度日期范围的总金额

来自分类Dev

给定开始日期,结束日期和TODAY(),如何计算任务完成的百分比

来自分类Dev

如何按月,每周和每季度选择数据

来自分类Dev

在excel中每月和每季度创建清单

来自分类Dev

根据开始日期和cakephp中软件包数量的下拉列表,计算结束日期

来自分类Dev

重塑带有开始日期和结束日期的数据集,以创建一个按天/月/季度计算总和的时间序列

来自分类Dev

如何根据一天中的任务完成情况从给定的日期列中获取开始日期和结束日期(oracle)

来自分类Dev

如何在PL / pgSQL中根据开始日期和持续时间(工作日)获取结束日期?

来自分类Dev

获取当前季度php的开始日期和结束日期

来自分类Dev

获取当前季度php的开始日期和结束日期

来自分类Dev

MySQL-如何使用开始日期和持续时间计算结束日期

来自分类Dev

如何在MS Access中显示开始日期和结束日期之间的日期

来自分类Dev

如何在 Rails 日期字段下拉列表中设置开始日期和结束日期选项?

来自分类Dev

如何根据不同数据帧中的开始日期和结束日期从时间序列中提取数据?

来自分类Dev

如何计算SAPUI5中开始日期和结束日期之间的总天数?

来自分类Dev

MySql中本月的开始日期和结束日期?

来自分类Dev

每季度平均

来自分类Dev

给定会计年度和季度数字时,计算开始日期和结束日期

Related 相关文章

  1. 1

    Oracle-查找每月,每季度和每年的日期

  2. 2

    如何从基于日期范围和表名的多表中选择数据(每季度)

  3. 3

    如何根据开始日期和结束日期计算季节

  4. 4

    从给定的季度 SQL 计算开始日期和结束日期

  5. 5

    如何获取当前季度的开始日期和结束日期?

  6. 6

    如何在tfs中创建具有开始日期和结束日期的任务?

  7. 7

    如何在tfs中创建带有开始日期和结束日期的任务?

  8. 8

    如何在Postgres上使用开始日期和结束日期以及季度生成系列

  9. 9

    Ruby(/Rails) 日期 - 每两周和每季度的 DateTime 范围

  10. 10

    每季度2个日期之间的差额

  11. 11

    每周,每月,每季度以php为单位备份日期

  12. 12

    每季度日期范围的总金额

  13. 13

    给定开始日期,结束日期和TODAY(),如何计算任务完成的百分比

  14. 14

    如何按月,每周和每季度选择数据

  15. 15

    在excel中每月和每季度创建清单

  16. 16

    根据开始日期和cakephp中软件包数量的下拉列表,计算结束日期

  17. 17

    重塑带有开始日期和结束日期的数据集,以创建一个按天/月/季度计算总和的时间序列

  18. 18

    如何根据一天中的任务完成情况从给定的日期列中获取开始日期和结束日期(oracle)

  19. 19

    如何在PL / pgSQL中根据开始日期和持续时间(工作日)获取结束日期?

  20. 20

    获取当前季度php的开始日期和结束日期

  21. 21

    获取当前季度php的开始日期和结束日期

  22. 22

    MySQL-如何使用开始日期和持续时间计算结束日期

  23. 23

    如何在MS Access中显示开始日期和结束日期之间的日期

  24. 24

    如何在 Rails 日期字段下拉列表中设置开始日期和结束日期选项?

  25. 25

    如何根据不同数据帧中的开始日期和结束日期从时间序列中提取数据?

  26. 26

    如何计算SAPUI5中开始日期和结束日期之间的总天数?

  27. 27

    MySql中本月的开始日期和结束日期?

  28. 28

    每季度平均

  29. 29

    给定会计年度和季度数字时,计算开始日期和结束日期

热门标签

归档