上次观察结转查询(SELECT from-between 不完整的时间序列)
Last observation carried forward query (SELECT from-between incomplete time series)
我有一个 table 只有在某些重新计算完成后才会得到一个新行(TOTAL
列)
DATE_REFRESH TOTAL
2020-08-28 40000.00
2020-09-04 60000.00
2020-09-22 100000.00
2020-10-13 125000.00
我需要 SELECT
日期 2020-09-15
和 return 60 000
这是 2020-09-22
下一个 update/refresh 之前的最后金额
想要的结果:60 000
太!
您可以使用 order by
和 top (1)
:
select top (1) *
from mytable
where date_refresh <= '20200915'
order by date_refresh desc
我想我理解你的问题,我的方法是在 SQL 中使用 DATEDIFF() 解决它。
所以 SQL 脚本如下:
SELECT TOTAL FROM (*your table*)
WHERE DATE_REFRESH = (
SELECT TOP 1 DATE_REFRESH
FROM (*your table*)
WHERE DATE_REFRESH < (*your date*)
ORDER BY DATEDIFF ( (*your date*), DATE_REFRESH )
)
我从离您的日期最近的 (TOP 1 FROM - ORDER BY DATEDIFF()
) 较小 (DATE_REFRESH < (*your date*)
) 日期的行中选择 TOTAL。
希望对您有所帮助。 :)
我有一个 table 只有在某些重新计算完成后才会得到一个新行(TOTAL
列)
DATE_REFRESH TOTAL
2020-08-28 40000.00
2020-09-04 60000.00
2020-09-22 100000.00
2020-10-13 125000.00
我需要 SELECT
日期 2020-09-15
和 return 60 000
这是 2020-09-22
下一个 update/refresh 之前的最后金额
想要的结果:60 000
太!
您可以使用 order by
和 top (1)
:
select top (1) *
from mytable
where date_refresh <= '20200915'
order by date_refresh desc
我想我理解你的问题,我的方法是在 SQL 中使用 DATEDIFF() 解决它。 所以 SQL 脚本如下:
SELECT TOTAL FROM (*your table*)
WHERE DATE_REFRESH = (
SELECT TOP 1 DATE_REFRESH
FROM (*your table*)
WHERE DATE_REFRESH < (*your date*)
ORDER BY DATEDIFF ( (*your date*), DATE_REFRESH )
)
我从离您的日期最近的 (TOP 1 FROM - ORDER BY DATEDIFF()
) 较小 (DATE_REFRESH < (*your date*)
) 日期的行中选择 TOTAL。
希望对您有所帮助。 :)