使用多列的最小日期时间更新温度 table
Update temp table with min datetime of multiple columns
如何更新我的 #temp table 中的以下列“LowestFinishDate”以保存列 [“Finished_OldDate”、“Finished_NewDate” 和 “ Current_FinishedDate"]?
这就是 Parent0000 的 table 的样子:
所以在这种情况下,我希望将 Parent0000 的 #temp.[LowestFinishDate] 中的所有 7 行更新为最低日期,即:
2020-11-25 14:15.
我曾尝试执行 CROSS/OUTER APPLY 并使用 table 值构造函数,但由于某种原因,每个 LowestFinishDate 行都会更新为 Current_FinishedDate.[=13 的对应值=]
提前致谢
一种方法是将 MIN
与子查询和 VALUES
table 结构一起使用:
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;
在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 函数然后为父 ID 取所有行中的最小值。
如何更新我的 #temp table 中的以下列“LowestFinishDate”以保存列 [“Finished_OldDate”、“Finished_NewDate” 和 “ Current_FinishedDate"]?
这就是 Parent0000 的 table 的样子:
所以在这种情况下,我希望将 Parent0000 的 #temp.[LowestFinishDate] 中的所有 7 行更新为最低日期,即:
2020-11-25 14:15.
我曾尝试执行 CROSS/OUTER APPLY 并使用 table 值构造函数,但由于某种原因,每个 LowestFinishDate 行都会更新为 Current_FinishedDate.[=13 的对应值=]
提前致谢
一种方法是将 MIN
与子查询和 VALUES
table 结构一起使用:
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;
在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 函数然后为父 ID 取所有行中的最小值。