所以我有一个存储主键、描述和更新日期列的参考表。像这样的东西
SELECT * FROM tblReasonRef
ReasonCode Description UpdateDate
27 Lunch 2010-12-01
24 Meeting 2010-12-01
20 SpecialProj 2010-12-01
前几天,代码描述发生了变化。所以现在查询返回以下...
ReasonCode Description UpdateDate
27 Lunch 2010-12-01
24 Meeting 2010-12-01
20 SpecialProj 2010-12-01
27 Training 2012-06-22
24 Meeting 2012-06-22
20 Lunch 2012-06-22
源数据每 30 分钟跟踪一次员工可能进入的状态,因此您将有以下查询...
SELECT * FROM tblhActivity
MemberID Date Time ReasonCode ReasonDuration
10922 2012-06-21 1200 27 100
10922 2012-06-21 1500 24 1800
10922 2012-06-25 1230 27 100
所以最初,我的查询是......
SELECT a.MemberID, a.Date, a.Time, r.Description, a.ReasonDuration
FROM tblhActivity a
INNER JOIN tblReasonRef r ON a.ReasonCode = r.ReasonCode
在 22 日更改之前一直运行良好。现在我对每个代码都有两个定义。问题是,如何创建一个根据日期选择正确代码的查询。
例如,我知道当日期是 21 日时,代码 27 的描述应该是午餐。25日,返回的描述应该是Training。
另请记住,在将代码添加到参考表中时,这可能会再次发生。我试图认为加入也应该在 UpdateDate 但我必须知道每个参考代码的开始和结束日期。有简单的解决方案吗?