【发布时间】:2018-12-10 18:22:22
【问题描述】:
我正在使用 SQL Server,我有一个简单的查询
SELECT TOP 10 *
FROM Rates
WHERE Date = '2017-06-09 00:00:00'
该日期没有费率,如果没有费率,查询应该给我 2017-06-08 00:00:00 的结果 样本数据:
dtmDate int CurrencyCode strCurrency dblInRate dblCCRate
2012-05-16 00:00:00 12 DZD 0.010545 0.010545
2012-05-11 00:00:00 12 DZD 0.010511 0.010511
2006-06-26 00:00:00 12 DZD 0.011334 0.011334
2016-03-30 00:00:00 12 DZD 0.008309 0.008309
2017-04-26 00:00:00 12 DZD 0.008530 0.008530
2017-04-28 00:00:00 12 DZD 0.008561 0.008561
2017-05-03 00:00:00 12 DZD 0.008530 0.008530
2017-10-13 00:00:00 12 DZD 0.007587 0.007587
2017-10-19 00:00:00 12 DZD 0.007581 0.007581
--对于 2018-06-09,表中没有任何记录,我需要将其替换为上一个日期。
那么当日期为 2017 年 6 月 9 日时,如何让它选择所有日期的所有费率,然后使用 2017 年 6 月 8 日的费率,否则使用相应日期的费率?
【问题讨论】:
-
如果
2017-06-08没有数据会怎样?? -
如果没有 6 月 8 日的数据,它应该带来 7 日的数据?
-
一个简单的
WHERE Date <= '2017-06-09 00:00:00' ORDER BY Date DESC可以吗?如果不是,那么选择前一天的确切规则是什么?如果 2017-06-08 也没有数据,那怎么办? -
您能添加一些示例数据和每天的预期结果吗?此外,如果您分别查询每一天,那么如果 9 日没有数据,那么您应该已经拥有 8 日的数据。只需在显示屏上再次发布即可。无需反复查询数据。
-
大卫 包括问题的数据和预期输出,而不是 cmets 您可以在此处格式化您的数据stackoverflow.com/questions/3006431/…
标签: sql sql-server tsql