Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana cara mendapatkan ID catatan catatan dengan tanggal minimum untuk setiap kunci asing?

Salah satu caranya adalah

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

CONTOH SQL FIDDLE

Cara lain untuk melakukannya adalah

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)

CONTOH SQL FIDDLE

Dan cara lain

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

CONTOH SQL FIDDLE

Saya suka yang kedua lebih dari yang lain karena singkatnya kode



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Parameter output prosedur tersimpan mengembalikan @Value

  2. Konversi 'datetimeoffset' menjadi 'datetime' di SQL Server (Contoh T-SQL)

  3. Bagaimana Anda melakukan Versioning di Nhibernate?

  4. Bagaimana cara melakukan IF...THEN dalam SQL SELECT?

  5. Kondisi indeks yang difilter diabaikan oleh pengoptimal