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

पंक्तियों से अधिकतम मूल्य प्राप्त करना और किसी अन्य तालिका में शामिल होना

आपने जो लिखा वह खंड से ए गायब था, इसलिए यह पूरी तरह स्पष्ट नहीं है कि आप कहां गलत हो गए लेकिन यह काम करना चाहिए

select 
       B.Id, 
       B.FileName,
       A.Name
FRom B
     INNER JOIN A
     ON A.id = B.id
    INNER JOIN ( 
          select A.Id, MAX(A.Rank)as ExpertRank 
          from A 
          group by A.Id
     ) as NewA 
    ON a.Id = NewA.ID 
       AND a.Rank = NewA.ExpertRank

इसे यहां काम करते हुए देखें

वैकल्पिक रूप से आप इसके बजाय राउनंबर का उपयोग कर सकते हैं

WITH CTE AS 
(
   SELECT ID, 
          RANK,
          Name,
          ROW_NUMBER() OVER (PARTITION BY ID ORDER BY RANK DESC) rn
   FROM A
)
SELECT b.Id b.FileName,cte.Name
FROM
   b
   INNER JOIN cte 
   ON b.id = cte.id
      and cte.rn = 1

इसे यहां काम करते हुए देखें



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कर्सर का उपयोग किये बिना टीएसक्यूएल में टेबल वैरिएबल के माध्यम से लूप करने का कोई तरीका है?

  2. एकाधिक तालिकाओं से SQL INSERT INTO

  3. एक्सेल डेटा से इंसर्ट स्टेटमेंट कैसे जेनरेट करें और SQL सर्वर टेबल में लोड करें - SQL सर्वर / TSQL ट्यूटोरियल पार्ट 103

  4. प्रत्येक आईडी के लिए अधिकतम मूल्य प्राप्त करने के लिए सरल क्वेरी

  5. SQL सर्वर डेटाबेस में T-SQL के साथ सभी तालिकाओं के लिए सभी अनुक्रमणिका के पुनर्निर्माण के लिए 3 तरीके