Sql 使用多列的最小日期时间更新临时表

Sql 使用多列的最小日期时间更新临时表,sql,sql-server,join,min,Sql,Sql Server,Join,Min,如何更新临时表中的以下列LowestFinishDate,以保存列[Finished\u OldDate、Finished\u NewDate和Current\u FinishedDate]的绝对最小值 这是Parent0000的表的外观: 因此,在本例中,我希望Parent0000的temp.[LowestFinishDate]中的所有7行都更新为最低日期,即: 2020-11-2514:15 我尝试过使用交叉/外部应用并使用表值构造函数,但出于某种原因,每个最下面的FinishDate行都会

如何更新临时表中的以下列LowestFinishDate,以保存列[Finished\u OldDate、Finished\u NewDate和Current\u FinishedDate]的绝对最小值

这是Parent0000的表的外观:

因此,在本例中,我希望Parent0000的temp.[LowestFinishDate]中的所有7行都更新为最低日期,即:

2020-11-2514:15

我尝试过使用交叉/外部应用并使用表值构造函数,但出于某种原因,每个最下面的FinishDate行都会使用当前_FinishedDate的对应值进行更新

提前感谢

一种方法是将MIN与子查询和值表构造一起使用:

更新YT SET lowestfinishedate=选择MINV.FinishDate 从值YT.FinishedOldDate, 截至年月日, YT.CurrentFinishDate VFinishDate 其中V.FinishDate不为空 从dbo.YourTable;
在SQL Server中,我倾向于这样写:

with toupdate as (
      select t.*,
             min(least_date) over (partition by t.parentid) as new_lowestfinishdate
      from #temp t cross apply
           (select min(dte) as least_date
            from (values (t.Finished_OldDate),
                         (t.Finished_NewDate)
                         (t.Current_FinishedDate)
                 ) v(dte)
           ) v
     )
update toudpate
    set lowestfinishdate = new_lowestfinishdate;
交叉应用取每行中日期的最小值。然后,窗口函数在父id的所有行中取最小值