在 Query/Report 上访问 2013 年复杂的 SUM

Access 2013 Complicated SUM on Query/Report

我正在尝试在 Access 2013 中创建一个显示当前状态和日期的查询,同时忽略旧的状态记录。

我有三个table:

customer 
-id (pk) 
-last 
-first

status 
-id (pk) 
status 
description

status-customer 
id (pk) 
customer_id 
status_id 
status_date 
notes

我想创建一个客户列表,其中包含他们处于特定状态的天数总和。

考虑加入以下 table:

Last        First        Customer_id         Status_date       Status
John         Smith              1               05/1/2015        A
John         Smith              1               05/10/2015       B
John         Smith              1               05/14/2015       A
John         Smith              1               05/30/2015       B 
Mary         Johnson            2               05/26/2015       A

我想要这样的东西:

                                                                Days in
 Last        First        Customer_id         Status_date       Status A
 John         Smith              1               05/1/2015        25     
 Mary         Johnson            2               05/26/2015       5

请注意,计算的天数仅为 A 和 B 之间的天数。因此对于 John Smith,记录 1 和 2 之间的间隔被添加到记录 3 和 4 之间的间隔。如果状态没有从 A 变为 B,则使用当前日期计算总数。

谢谢。

关联子select、派生table、分组等。我不知道MS Access如何减去日期,所以SUM(statusB - statusA)可能需要调整。

select Last,
       First,
       Customer_id,
       MIN(statusdateA),
       SUM(statusdateB - statusdateA)
(
select Last,
       First,
       Customer_id,
       Status_date as statusdateA,
       (select min(t2.Status_date) from tablename t2
        where t2.Status_date > t1.Status_date
          and t2.status = 'B') as statusdateB
from tablename t1
where status = 'A'
) dt
group by Last, First, Customer_id