我有僱員每年更換費率,有時一年更換幾次。試圖找出年度的最後一個匯率,並且如果年度沒有匯率變化,那麼就要拉低前一年的匯率。我已經獲得了這一年的最後一個記錄,但是在使用之前沒有變化的年份值時遇到了困難。理想情況下,我每年都會得到一個結果。但是說到這一點,我意識到可能會很快失去控制。因此,如果2008年和2010年的費率有所下降,但2009年的費率不會,我需要2008年的費率才能顯示2009年。使用SQL Server 2008 R2 考慮使用日曆來做跨應用或外應用,但我一直在轉身。 我已經創建了日曆,使用Todd Fifield發佈,並在年份中添加年值。 http://www.sqlservercentral.com/articles/T-SQL/70482/每年需要最後的價值和以前的價值,如果年份爲空
這是我迄今爲止
with YrHist as
(
select h.HRCo, h.HRRef, h.EffectiveDate, YEAR(h.EffectiveDate) as EffectiveYr,DATEADD(m,DATEDIFF(m,0,h.EffectiveDate),0) as EffMth, h.Type, h.NewSalary, h.OldSalary
from HRSH h
left outer join PREHName p on h.HRCo=p.PRCo and h.HRRef=p.Employee
)
select distinct ROW_NUMBER() over(Order By tt.HRCo,tt.HRRef,tt.EffectiveYr) as RowID,
tt.HRCo, tt.HRRef,tt.EffMth, tt.EffectiveYr, tt.EffectiveDate, tt.Type, tt.NewSalary as MaxRateForYr, tt.OldSalary
from YrHist as tt
inner join
(select HRCo, HRRef, EffectiveYr, MAX(EffectiveDate) as MaxEffDate
from YrHist
Group By HRCo, HRRef, EffectiveYr) as m on tt.EffectiveYr=m.EffectiveYr and tt.EffectiveDate=m.MaxEffDate and tt.HRCo=m.HRCo and tt.HRRef=m.HRRef
想知道如果聯盟所有加入日曆和使用COALESCE可能會得到我在找什麼。 – Kerry
結束更換表格;而不是查看保持工資變化的表格,我使用表格來檢查歷史記錄,並使用每年的最大日期。 – Kerry