[英]Update temp table with min datetime of multiple columns
如何更新 #temp 表中的以下列“LowestFinishDate”以保存列 [“Finished_OldDate”、“Finished_NewDate”和“Current_FinishedDate”] 的绝对最小值?
这是 Parent0000 的表格:
因此,在这种情况下,我希望将 Parent0000 的 #temp.[LowestFinishDate] 中的所有 7 行更新为最低日期,即:
2020-11-25 14:15。
我尝试过 CROSS/OUTER APPLY 并使用表值构造函数,但由于某种原因,每个 LowestFinishDate 行都会使用 Current_FinishedDate 的对应值进行更新。
提前致谢
在 SQL 服务器中,我倾向于将其写为:
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;
cross apply
取每行中日期的最小值。 window function 然后在所有行中为父 id 取最小值。
一种方法是将MIN
与子查询和VALUES
表构造一起使用:
UPDATE YT
SET LowestFinishedDate = (SELECT MIN(V.FinishDate)
FROM (VALUES (YT.FinishedOldDate),
(YT.FinishedNewDate),
(YT.CurrentFinishDate)) V(FinishDate)
WHERE V.FinishDate IS NOT NULL)
FROM dbo.YourTable;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.