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

किसी क्वेरी के भीतर नवीनतम रिकॉर्ड पुनर्प्राप्त करना

MySQL में रैंकिंग/विश्लेषणात्मक/विंडो कार्यक्षमता नहीं है।

SELECT tl.locationid, tl.timestamp, tp.name, X, Y, Z
  FROM tblPerson tp
  JOIN tblLocation tl ON tl.personid = tp.personid
  JOIN (SELECT t.personid,
               MAX(t.timestamp) AS max_date
          FROM tblLocation t
      GROUP BY t.personid) x ON x.personid = tl.personid
                            AND x.max_date = tl.timestamp

SQL सर्वर 2005+ और Oracle 9i+ एनालिटिक्स का समर्थन करते हैं, ताकि आप इसका उपयोग कर सकें:

SELECT x.locationid, x.timestamp, x.name, x.X, x.Y, x.Z
  FROM (SELECT tl.locationid, tl.timestamp, tp.name, X, Y, Z,
               ROW_NUMBER() OVER (PARTITION BY tp.name ORDER BY tl.timestamp DESC) AS rank
          FROM tblPerson tp
          JOIN tblLocation tl ON tl.personid = tp.personid) x
WHERE x.rank = 1

MySQL पर ROW_NUMBER कार्यक्षमता के समान प्राप्त करने के लिए एक चर का उपयोग करना:

SELECT x.locationid, x.timestamp, x.name, x.X, x.Y, x.Z
  FROM (SELECT tl.locationid, tl.timestamp, tp.name, X, Y, Z,
               CASE
                 WHEN @name != t.name THEN
                   @rownum := 1
                 ELSE @rownum := @rownum + 1
               END AS rank,
               @name := tp.name
          FROM tblLocation tl
          JOIN tblPerson tp ON tp.personid = tl.personid
          JOIN (SELECT @rownum := NULL, @name := '') r
      ORDER BY tp.name, tl.timestamp DESC) x
WHERE x.rank = 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 समूह और महीने के हिसाब से राशि - शून्य के लिए डिफ़ॉल्ट

  3. SQL सर्वर 2008 पर अद्वितीय कुंजी बनाम अद्वितीय अनुक्रमणिका

  4. SQL सर्वर प्रतिकृति सेट करना और कॉन्फ़िगर करना

  5. SQL सर्वर में अपने शुद्ध उपयोगकर्ता परिभाषित फ़ंक्शन के प्रदर्शन को बेहतर बनाने के लिए मैं क्या कर सकता हूँ?