我正在尝试在Access 2013中创建一个显示当前状态和日期的查询,同时忽略旧的状态记录。
我有三张桌子:
客户 id(pk) 持续 第一
状态 id(pk) 状态 描述
状态,客户 id(pk) 顾客ID STATUS_ID status_date 笔记
如果我创建一个包含last,first,customer_id和status_date字段的查询,它在最后一个status_date中被分组,那么它的效果很好。但我无法根据status_date查询列出当前状态的查询。无论我如何添加状态,它都会中断分组并显示具有多个状态的同一个人。
例如:
Last First Customer_id Status_date
John Smith 1 05/30/2015
Mary Johnson 2 05/26/2015
Last First Customer_id Status_date Status
John Smith 1 05/25/2015 In Process
John Smith 1 05/30/2015 Complete
Mary Johnson 2 05/26/2015 Complete
我想要第二个查询,但没有重复的记录。
谢谢。
答案 0 :(得分:0)
我上传了我的解决方案:http://sqlfiddle.com/#!6/ef4b9/1/0
SELECT c.first,c.last,c.id as customer_id,sc.status_date,s.name
FROM customer c
left join customer_status sc on sc.customer_id=c.id
left join status s on s.id=sc.status_id
where sc.id=(SELECT MAX(id) from
customer_status WHERE customer_id=sc.customer_id)
评论:我在customer_Status上取了最后一个id,而不是最后一个日期,因为如果在同一日期有多个状态更新,我们想要最后插入的状态。 这是sql server 2014语法在访问时应该是相同的......