如何解决具有用户定义时间范围的数据透视表
我创建了一个 dbfiddle of my database structure and of the query that I have built so far。
用户应该能够选择一个时间范围(以月为单位),并且运行此查询应该会看到一个报告,其中在行中有变动,在列中有月。 因此,如果用户选择“2021-01”和“2021-06”,我希望仅显示列 jan-jun。如果用户选择“2020-07”和“2021-02”,则应仅选择这些列 我的查询现在在预定的时间段 (jan-dec) 内有效,而我想添加一个时间段(最终可以在两年之间扩展)。
到目前为止,我的查询如下:
SELECT
movement,SUM(IF(MONTH(date) = 1,amount,0)) AS Jan,SUM(IF(MONTH(date) = 2,0)) AS Feb,SUM(IF(MONTH(date) = 3,0)) AS Mar,SUM(IF(MONTH(date) = 4,0)) AS Apr,SUM(IF(MONTH(date) = 5,0)) AS May,SUM(IF(MONTH(date) = 6,0)) AS Jun,SUM(IF(MONTH(date) = 7,0)) AS Jul,SUM(IF(MONTH(date) = 8,0)) AS Aug,SUM(IF(MONTH(date) = 9,0)) AS Sep,SUM(IF(MONTH(date) = 10,0)) AS Oct,SUM(IF(MONTH(date) = 11,0)) AS Nov,SUM(IF(MONTH(date) = 12,0)) AS Dece
FROM movements
WHERE YEAR(date)=2021
GROUP BY movement
作为旁注:我正在运行 mysql8,所以也许我的代码可以通过利用一些我还不知道的 mysql8 功能来改进。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。