Выберите заменить пустые значения на значения с другой даты - PullRequest
0 голосов
/ 02 июля 2018

Я использую 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, иначе использовать тарифы на соответствующую дату?

Ответы [ 3 ]

0 голосов
/ 02 июля 2018
SELECT TOP 10 * 
FROM Rates 
WHERE Date <= '2017-06-09 00:00:00'
ORDER BY Date DESC
0 голосов
/ 02 июля 2018

вы можете привести конкретный столбец к дате и сравнить его с фильтром. просто так:

SELECT TOP 10 * 
FROM Rates 
WHERE cast(Date as date)= '2017-06-09'
0 голосов
/ 02 июля 2018

Вот один из методов:

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 из них произвольно, как и ваш запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...