1

我在 MS Access 中有这四个数据字段 - ID、SubscriptionStartDate、SubscriptionEndDate 和 MonthlyCost。订阅开始和结束日期将涵盖数月甚至数年,我想为所有 ID 的开始日期和结束日期之间的每个月计算 MonthlyCost。

在 Access 中使用 SQL,我正在寻找如下输出:

月 TotalMonthlyCost

Jan-13 100000 -> Jan-13 的每月总成本,所有 ID 的总和。

2 月 13 日 150000 -> 2 月 13 日的每月总成本,所有 ID 的总和。...

4

1 回答 1

2

我认为你可以做这样的事情:

select
    m.month
    ,sum(d.MonthlyCost)
from
    months as m
    inner join data as d
        on d.SubscriptionStartDate < m.endDate
        and d.SubscriptionEndDate > m.start
group by
    m.month

您需要创建如下所示的“月”表

   month   |    start   |   end
 'jan-13'  | 01/01/2013 | 31/01/2013
 'feb-13'  | 01/02/2013 | 28/02/2013
 'mar-13'  | 01/03/2013 | 31/03/2013

但这就是说,如果您在那个月(即使是一天),那么您应该添加每月订阅。那是对的吗?

注意:我在这里没有访问权限,我不记得我的语法是否适合访问。(我认为您需要在联接子句中使用方括号之类的东西)

于 2013-09-25T06:43:11.140 回答