Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

मैं प्रत्येक विदेशी कुंजी के लिए न्यूनतम तिथि के साथ रिकॉर्ड की रिकॉर्ड आईडी कैसे प्राप्त करूं?

इसे करने का एक तरीका है

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 EXAMPLE

इसे करने का दूसरा तरीका है

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 EXAMPLE

और दूसरा तरीका

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 EXAMPLE

कोड की कमी के कारण मुझे दूसरों की तुलना में दूसरा अधिक पसंद है



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. बाइनरी (8) फ़ील्ड के लिए टाइमस्टैम्प मान कैसे उत्पन्न करें?

  2. क्या SQL सर्वर परिणामी कॉलम नामों को जाने बिना पिवट कर सकता है?

  3. मैं एक स्ट्रिंग को कैसे विभाजित करूं ताकि मैं आइटम x तक पहुंच सकूं?

  4. दो प्रश्नों से परिणाम संलग्न करें और एक ही तालिका के रूप में आउटपुट करें

  5. पहले से मौजूद तालिका के लिए कॉलम पर अद्वितीय बाधा कैसे बनाएं - SQL सर्वर / TSQL ट्यूटोरियल भाग 97