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

प्रत्येक समूह से शीर्ष 1 पंक्ति का चयन करें

यदि आप SQL-सर्वर (न्यूनतम 2005) का उपयोग करते हैं तो आप CTE . का उपयोग कर सकते हैं ROW_NUMBER . के साथ समारोह। आप CAST . का उपयोग कर सकते हैं संस्करण के लिए सही क्रम प्राप्त करने के लिए:

WITH cte 
     AS (SELECT id, 
                userid, 
                version, 
                datetime, 
                Row_number() 
                  OVER ( 
                    partition BY userid 
                    ORDER BY Cast(version AS INT) DESC) rn 
         FROM   [dbo].[table]) 
SELECT id, 
       userid, 
       version, 
       datetime 
FROM   cte 
WHERE  rn = 1 
ORDER BY userid

डेमो

ROW_NUMBER एक ही (शीर्ष) संस्करण वाले एकाधिक उपयोगकर्ता होने पर भी हमेशा एक रिकॉर्ड देता है। यदि आप सभी "शीर्ष-संस्करण-उपयोगकर्ता-रिकॉर्ड" वापस करना चाहते हैं, तो आपको ROW_NUMBER को बदलना होगा DENSE_RANK . के साथ ।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में HTML डिकोड करने का कोई तरीका है?

  2. नेटबीन्स में हाइबरनेट रिवर्स इंजीनियरिंग SQL सर्वर टेबल नहीं ढूंढ सकता है

  3. एक ही स्टोर प्रक्रिया में 3 अपडेट का उपयोग करना? छोटी त्रुटि

  4. एसक्यूएल सर्वर में एकाधिक पसंद नहीं है

  5. QUOTED_IDENTIFIER को समझना