2017-03-10 72 views
1

我有了当该资产的特定状态改变状态的审计日志的资产表...所以看的相似,这得到状态值

AssetId  CapexStatus  Date 
-------  -----------  ----- 
AM706  1    2017-02-03 
AM706  0    2017-02-07 
AM706  1    2017-02-10 

然后我有一个东西时间表表格,其中有AssetID和一个交易日期。我基本上想根据AssetId和交易日期当前的资本支出状态将资本支出状态从资产日志表中提取出来。例如。如果交易日期是2月8日,则资本支出状态应为“0”。

时间表表

TimesheetId  AssetId  TimesheetDate 
-----------  -------  ------------- 
1    AM706  2017-02-01 
2    AM706  2017-02-08 
3    AM706  2017-02-12 

回答

1

我觉得这样的事情可能做到这一点:

select 
    t.*, 
    a.CapexStatus 
from 
    TimeSheet t 
outer apply (Select top 1 * from AssetLog al 
    where 
     al.AssetID = t.AssetID 
    and al.Date < t.TimesheetDate 
    order by al.Date desc) a 
+0

很抱歉,似乎没有要与任何由assetid链接...我尝试添加“和“al.assetId = t.assetId”但记录1返回空值 –

+0

抱歉格伦,修正了。 –

+0

嗨Leon ...当我运行这个CapexStatus为NULL时TimesheetId = 1它应该返回一个CapexStatus的1 –

0
create view vwMaxCapex 
as 
select top 1 capexStatus, date, AssetId from AssetsLog 
order by date asc 
go 


select a.AssetId, a.timesheetDate, 
    (select capexstatus 
    from vwMaxCapex 
    where date<=a.timesheetDate and assetId=a.AssetId) capex 
from timetable a