获取范围内最近的值-sql

62lalag4  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(257)

对于这个表,我需要根据给定的(+/-)运行总数来获取日期值。

+----+------------+---------+---------------+
| ID |    DATE    | AMOUNT  | RUNNING TOTAL |
+----+------------+---------+---------------+
| 20 | 2020-04-24 | 2941.18 | 2,941.18       |
| 21 | 2020-05-01 | 2941.18 | 5,882.36       |
| 22 | 2020-05-08 | 2941.18 | 8,823.54       |
| 23 | 2020-05-15 | 2941.18 | 11,764.72      |
| 24 | 2020-05-22 | 2941.18 | 14,705.90      |
| 25 | 2020-05-29 | 2941.18 | 17,647.08      |
+----+------------+---------+---------------+

如果给定的运行总计值与表中显示的值完全相同,则很容易。如果给定的运行总数为5882.36,则结果为2020-05-01;如果给定的运行总数为14,75.90,则结果为2020-05-22;等等。
然而,给定的数字和表中存储的数字并不完全相同。例如,
给定运行总数为8600,结果应为2020-05-08;对于14000人来说,结果应该是2020年5月22日。
我试过这个问题

SELECT TOP 1 DATE FROM Table ORDER BY abs([RunningTotal] - '14000')

它几乎可以正常工作,但如果给定的运行总数是14706或15000,结果是2020-05-22,而不是2020-05-29。需要的结果是2020-05-29,因为它在记录id#25的运行总数之内。

mdfafbf1

mdfafbf11#

您可以使用过滤和 order by :

select top (1) t.*
from t 
where running_total >= @running_total
order by running_total desc

相关问题