Слияние SQL с использованием диапазона дат в источнике - PullRequest
0 голосов
/ 18 июня 2019

Я пытаюсь создать запрос, который объединит только поездки, происходящие в следующие 3 дня. Запрос будет выполняться в потоках Microsoft каждый вечер, чтобы заполнить приложение компании. БД работает в Azure SQL, а тип данных [Trip Date] - datetime2.

Я попытался between getdate() and getdate() + 3 безуспешно, все записи объединены. Я ценю любую помощь.

merge TblAppTrips as target
using TblTrips as source on (target.TripID = source.TripID)

When matched then
    update 
        set TripId = source.TripID, 
            cost = source.cost, 
            [Trip Date] = source.[Trip Date]  

when not matched then
    insert ([TripID], [cost], [Trip Date])
    values (source.[TripID], source.[cost], source.[Trip Date]);

1 Ответ

0 голосов
/ 20 июня 2019

Попробуйте - вам может понадобиться немного поиграться с числами, но это должно указать вам правильное направление.В основном вам нужно ограничить целевое окно следующими тремя днями при попытке обновления.Дополнение к вкладке только добавит новые поездки, которые произойдут в следующие 3 дня.

merge TblAppTrips as target
using TblTrips as source on (target.TripID = source.TripID)

When matched and datediff(day, getdate(), target.[Trip Date]) between 0 and 3
then
  update 
    set TripId = source.TripID, 
        cost = source.cost, 
        [Trip Date] = source.[Trip Date]  

when not matched and datediff(day, getdate(), source.[Trip Date]) between 0 and 3 
then
  insert ([TripID], [cost], [Trip Date])
  values (source.[TripID], source.[cost], source.[Trip Date]);
...