sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cómo obtengo la ID de registro del registro con la fecha mínima para cada clave externa?

Una de las formas de hacerlo es

select A.ForeignKeyID, R.recordID
from (select distinct t.ForeignKeyID from table as t) as A
    outer apply
    (
        select top 1 t.recordID
        from table as t where t.ForeignKeyID = A.ForeignKeyID
        order by t.createdDate asc
    ) as R

EJEMPLO DE VIAJE DE SQL

Otra forma de hacerlo es

select top 1 with ties
    t.recordID, t.ForeignKeyID
from table as t
order by row_number() over (partition by t.ForeignKeyID order by t.createdDate)

EJEMPLO DE VIAJE DE SQL

Y de otra manera

select A.recordID, A.ForeignKeyID
from
(
    select
        t.recordID, t.ForeignKeyID,
        row_number() over (partition by t.ForeignKeyID order by t.createdDate) as RowNum
    from table1 as t
) as A
where A.RowNum = 1

EJEMPLO DE VIAJE DE SQL

Me gusta el segundo más que otros debido a la brevedad del código