Necesito encontrar el valor mínimo de la fecha para 'lastupdatedat' pero solo entre el mismo RowID

Hice una mesa temporal '#Results' para incluir los campos 'RowID' y 'LastUpDatedat'. Necesito encontrar la fecha mínima para el RowID. Por ejemplo, si hay dos entradas con el ROWID '9', debo encontrar la última palabra que ocurrió primero. Intenté usar el MIN (LastUpDatedat) pero que solo devuelven la fecha mínima para toda la tabla.

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

Probé esto, pero solo encuentra el mínimo para toda la tabla. ¿Hay alguna manera de encontrar la fecha mínima para un RowID?

1
H22 26 jun. 2019 a las 22:44

1 respuesta

La mejor respuesta

Quieres una cláusula de correlación:

update MemberCarrierMap 
set CreatedAt = (select MIN(LastUpdatedAt) from #results r where r.rowId = MemberCarrierMap.rowId)
Where CreatedAt is null;
1
Gordon Linoff 26 jun. 2019 a las 19:45