我正在尝试创建一个查询,该查询将仅合并未来3天发生的旅行。该查询将在每晚Microsoft流量上运行,以填充公司应用程序。 Db在Azure SQL上运行,[旅行日期]数据类型为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]);
答案 0 :(得分:0)
尝试一下-您可能需要稍微练习一下数字,但这应该为您指明正确的方向。基本上,在尝试更新时,您基本上需要将目标窗口限制为接下来的三天。插入内容只会增加未来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]);