我正在使用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-06-09时,如何选择所有日期的所有费率,然后使用2017-06-08中的费率,否则如何使用相应日期的费率?
答案 0 :(得分:1)
这是一种方法:
SELECT TOP 10 r.*
FROM (SELECT TOP (1) WITH TIES r.*
FROM Rates r
WHERE Date <= '2017-06-09'
ORDER BY Date DESC
) r;
TOP (1) WITH TIES
返回具有相同日期的所有记录(假设没有时间部分,这与您的示例数据和问题一致)。 WHERE
说日期不迟于2017-06-09。 ORDER BY
表示它是指定日期或指定日期之前的最新日期。
外部TOP (10)
与您的查询一样,从其中任意选择10个。
答案 1 :(得分:0)
SELECT TOP 10 *
FROM Rates
WHERE Date <= '2017-06-09 00:00:00'
ORDER BY Date DESC
答案 2 :(得分:0)
您可以将特定的列强制转换为“日期”,并将其与过滤器进行比较。就是这样:
var base64EncodedPdf = Convert.ToBase64String(Model.FileContent);
<iframe src="data:application/pdf;base64,@base64EncodedPdf " style="width:1200px; height:1000px;"></iframe>