Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak uzyskać identyfikator rekordu rekordu z datą minimalną dla każdego klucza obcego?

Jednym ze sposobów na to jest

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

PRZYKŁAD SPRZĘTU SQL

Innym sposobem na to jest

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)

PRZYKŁAD SPRZĘTU SQL

I inny sposób

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

PRZYKŁAD SPRZĘTU SQL

Drugi podoba mi się bardziej niż inne ze względu na krótki kod



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kiedy używać indeksów klastrowych lub nieklastrowych w programie SQL Server

  2. Zapytanie SQL - Usunąć duplikaty, jeśli więcej niż 3 duplikaty?

  3. Jak rozwiązać błąd system.data.sqlclient.sqlexception (0x80131904)?

  4. Zapytanie serwera SQL, aby uzyskać listę kolumn w tabeli wraz z typami danych, ograniczeniami NOT NULL i PRIMARY KEY

  5. T-SQL używający SUM do sumy bieżącej