使用源上的日期范围进行SQL合并

使用源上的日期范围进行SQL合并,sql,azure-sql-database,sql-merge,Sql,Azure Sql Database,Sql Merge,我正在尝试创建一个查询,该查询将只合并未来3天内发生的旅行。查询将每晚在Microsoft flows上运行,以填充公司应用程序。Db正在Azure SQL上运行,[Trip Date]数据类型为datetime2 我在getdate()和getdate()+3之间尝试了,但运气不佳,所有记录都合并了。谢谢你的帮助 merge TblAppTrips as target using TblTrips as source on (target.TripID = source.TripID) Wh

我正在尝试创建一个查询,该查询将只合并未来3天内发生的旅行。查询将每晚在Microsoft flows上运行,以填充公司应用程序。Db正在Azure SQL上运行,[Trip Date]数据类型为datetime2

我在getdate()和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]);

试试这个-你可能需要稍微玩弄一下数字,但它应该能为你指明正确的方向。在尝试更新时,基本上需要将目标窗口限制在接下来的三天内。插入的内容只会添加未来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]);