sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan får jeg post-id'et for posten med minimumsdatoen for hver fremmednøgle?

En af måderne at gøre det på er

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 EKSEMPEL

En anden måde at gøre det på er

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 EKSEMPEL

Og en anden måde

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 EKSEMPEL

Jeg kan lide den anden mere end andre på grund af kort kode



  1. Læring SELECT FROM WHERE forberedte udsagn

  2. Få objekter af objekter i én forespørgsel i skinner

  3. Returner alle mulige kombinationer af værdier på kolonner i SQL

  4. Oracle SQL - Sådan hentes de højeste 5 værdier af en kolonne