我有一个Assets表,其中包含一个审核日志,指出该资产的特定状态何时更改状态...所以看起来与此类似
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
答案 0 :(得分: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
答案 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