MS Access:在开始日期和结束日期之间按月分组

时间:2013-09-25 06:20:37

标签: sql ms-access sql-date-functions

我有两个数据字段--MS Access中的ID,SubscriptionStartDate,SubscriptionEndDate和MonthlyCost。订阅开始日期和结束日期将涵盖多个月甚至几年,我想为所有ID的开始日期和结束日期之间的每个月汇总每月成本。

在Access中使用SQL,我正在寻找类似的输出:

月TotalMonthlyCost

Jan-13 100000 - >每月总费用为1月13日,总计所有ID。

Feb-13 150000 - >每月总费用为2月13日,总计所有ID。 ...

1 个答案:

答案 0 :(得分: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

但这就是说,如果你在那个月(甚至一天),那么你应该加入rmonthly订阅。这是对的吗?

注意:我没有访问权限,我不记得我的语法是否适合访问。 (我认为你需要在join子句中使用括号或其他东西)