我正在尝试在Access 2013中创建一个显示当前状态和日期的查询,同时忽略旧的状态记录。
我有三张桌子:
customer
-id (pk)
-last
-first
status
-id (pk)
status
description
status-customer
id (pk)
customer_id
status_id
status_date
notes
我想创建一个客户列表,其中包含他们处于特定状态的天数。
考虑以下连接表:
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& A之间的天数。 B.因此,对于John Smith,记录1和2之间的间隔被添加到记录3和4之间的间隔。如果状态未从A更改为B,则使用当前日期计算总数。
谢谢。
答案 0 :(得分:0)
相关的子选择,派生表,分组等。我不知道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