TableA
日期 | 匯率 |
---|---|
2019/10/31 | 30.106 |
2019/11/30 | 30.226 |
2019/12/01 | 30.218 |
2019/12/02 | 30.236 |
2019/12/03 | 30.188 |
TableB
日期 | 匯率 | 上月底匯率
------------- | -------------
2019/10/31 | 30.106 | 30.888
2019/11/30 | 30.226 | 30.106
2019/12/01 | 30.218 | 30.226
2019/12/02 | 30.236 | 30.226
2019/12/03 | 30.188 | 30.226
TableB 20191130 的上月底匯率為 TableA 20191031的匯率
TableB 20191201 的上月底匯率為 TableA 20191130的匯率
TableB 20191202 的上月底匯率為 TableA 20191130的匯率
TableB 20191203 的上月底匯率為 TableA 20191130的匯率
將 TableA 變成 TableB , MS SQL 要如何寫 ?
其實這筆 2019/10/31 30.106 30.888
第一筆不會有匯率的..所以補當日匯率..
declare @Tab table(
日期 date
,匯率 decimal(18,3)
)
insert into @Tab
values('2019/10/31','30.106')
,('2019/11/30','30.226')
,('2019/12/01','30.218')
,('2019/12/02','30.236')
,('2019/12/03','30.188')
select a.*
,isNull((
select top 1 b.匯率
from @Tab as b
where year(dateadd(m,-1,a.日期)) = year(b.日期)
and month(dateadd(m,-1,a.日期)) = month(b.日期)
order by b.日期 desc
),a.匯率) 上月底匯率
from @Tab as a