sql >> Database >  >> RDS >> Sqlserver

Hoe kom ik aan het record-ID van het record met de minimale datum voor elke externe sleutel?

Een van de manieren om dit te doen is

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

SQL FIDDLE VOORBEELD

Een andere manier om dit te doen is

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)

SQL FIDDLE VOORBEELD

En op een andere manier

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

SQL FIDDLE VOORBEELD

Ik vind de tweede leuker dan andere vanwege de korte code



  1. Voeg een tabel en een wijzigingslogboek samen in een weergave in PostgreSQL

  2. Hoe arrays samen te voegen met MySQL vanuit 3 tabellen met veel-op-veel-relaties

  3. JSON_TYPE() - Krijg een JSON-waardetype in MySQL

  4. Queryresultaten exporteren naar een CSV-bestand in SQLcl (Oracle)