如何从重复的行号中找到最小值?

时间:2019-06-26 19:44:04

标签: sql sql-server

我需要找到“ LastUpdatedAt”的最小日期值,但只能在相同的rowId之间找到

我制作了一个临时表“ #results”,其中包含“ rowId”和“ LastUpdatedAt”字段。我需要找到RowId的最短日期。例如,如果有两个具有rowId'9'的条目,我必须找到最先出现的LastUpdatedAt。我尝试使用MIN(LastUpdatedAt),但这仅返回整个表的最小日期。

create table #results(
    RowId       id_t,
    LastUpdatedAt date_T
)


insert into #results
select H.RowId, H.LastUpdatedAt from MemberCarrierMap M Join MemberCarrierMapHistory H on M.RowId = H.RowId

select * from #results


RowId   LastUpdatedAt

9       2010-01-21 17:07:48.640
9       2018-05-14 13:33:04.313
88      2016-11-22 14:49:13.770

update MemberCarrierMap 
set CreatedAt = (select MIN(LastUpdatedAt) from #results)
Where CreatedAt is null

我尝试了这个,但是它只找到整个表的最小值。反正有找到一个rowID的最短日期吗?

1 个答案:

答案 0 :(得分:1)

您想要一个相关子句:

update MemberCarrierMap 
set CreatedAt = (select MIN(LastUpdatedAt) from #results r where r.rowId = MemberCarrierMap.rowId)
Where CreatedAt is null;