我有一个包含项目数据的数据库表,每个项目都有一条记录。在一些示例数据下方,持续时间以月为单位,目前限制为最大值。240,但理论上可以是无限的:
id name amount start_date duration
1 Project A 9.000 2013-06-24 3
2 Project B 5.000 2013-07-13 2
3 Project C 15.000 2013-08-06 3
现在我希望 MySQL 返回每个项目每月的金额:金额除以从 start_date 所在月份开始的每个月的持续时间。因此,根据上述数据,MySQL 将返回如下内容,按月份排序:
id name month amount_this_month
1 Project A 2013-06 3.000
1 Project A 2013-07 3.000
2 Project B 2013-07 2.500
1 Project A 2013-08 3.000
2 Project B 2013-08 2.500
3 Project C 2013-08 5.000
3 Project C 2013-09 5.000
3 Project C 2013-10 5.000
我在这里看到了一些关于 SQL Server 的东西,建议使用一个填充了数字的虚拟表。有人对如何在不影响原始数据库结构的情况下执行此操作有任何想法吗?
我需要在一个查询中执行此操作(因此没有临时(内存)表)。这在 MySQL 中怎么可能?我看到了 Oracle 的一些解决方案来遍历(虚拟)范围/序列,是否可以在 MySQL 中做这样的事情?