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

रिकर्सिव सीटीई का उपयोग करके पिछली और वर्तमान पंक्ति मान कैसे प्राप्त करें?

यह बढ़ते हुए आईडी मानों को मानता है और आईडी में अंतराल से निपटेगा

SELECT
   ID, 
   This.Number AS CurrentValue, 
   Prev2.Number AS PreviousValue
FROM
   myTable This
   OUTER APPLY
   (
    SELECT TOP 1
       Number
    FROM
       myTable Prev
    WHERE
       Prev.ID < This.ID  -- change to number if you want
    ORDER BY
       Prev.ID DESC
   ) Prev2;

या

WITH CTE
     AS (SELECT ID,
                Number,
                ROW_NUMBER() OVER (ORDER BY ID) AS rn
         FROM   Mytable)
SELECT ID,
       This.Number AS CurrentValue,
       Prev.Number AS PreviousValue
FROM   CTE This
       LEFT JOIN CTE Prev
         ON Prev.rn + 1 = This.rn; 

और SQL सर्वर 2012 के लिए

SELECT
   ID,
   Number AS CurrentValue,
   LAG(Number) OVER (ORDER BY ID) AS PreviousValue
FROM
   MyTable



  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 सर्वर 2005/2008 में सप्ताह का दिन प्राप्त करें

  3. PHP लॉगिन नाम के बजाय कंप्यूटर नाम के साथ MSSQL (विंडोज़ प्रमाणीकरण) में लॉगिन करने का प्रयास कर रहा है

  4. SQL सर्वर के लिए चयन * में सम्मिलित करें, संभव नहीं है, क्या मैं सही हूँ?

  5. मैं सारांश रिपोर्ट जैसे सारणीबद्ध प्रारूप में एक चुनिंदा क्वेरी परिणाम चाहता हूं