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

पिछली पंक्तियों को संदर्भित करने के लिए TSQL क्वेरी

एसक्यूएल सर्वर 2012+ के लिए:

आप LAG का उपयोग कर सकते हैं समारोह।

पिछले प्राप्त मूल्य को खोजने के लिए यहां एक उदाहरण दिया गया है, तो निश्चित रूप से अन्य बहुत अच्छे होंगे।

SELECT      TOP 5 
            ReceivedYTD, 
            InvoicedYTD, 
            OrderedYTD, 
            YearReported, 
            WeekReported,

-- Relevant part
            LAG(ReceivedYTD)
                OVER (ORDER BY YearReported DESC, WeekReported DESC) AS PreviousReceivedYTD
-- End relevant part

FROM        Products 
WHERE       ProductId = @ProductId
ORDER BY    YearReported DESC, 
            WeekReported DESC

अन्यथा

आपके द्वारा वापस टिप्पणी करने से पहले ही मैं इस उत्तर में अच्छी तरह से शामिल था, इसलिए मैं बस इसके साथ गया।

आपको एक सीटीई का उपयोग करना होगा, और आप जिस पंक्ति संख्या ऑफ़सेट की तलाश कर रहे हैं, उससे उसके सामने जुड़ना होगा।

WITH CTE AS (
    SELECT      TOP 5 
                RowNumber = ROW_NUMBER() OVER (ORDER BY YearReported DESC, WeekReported DESC)

                ReceivedYTD, 
                InvoicedYTD, 
                OrderedYTD, 
                YearReported, 
                WeekReported,
    FROM        Products 
    WHERE       ProductId = @ProductId
    ORDER BY    YearReported DESC, 
                WeekReported DESC
)

SELECT   CTE.ReceivedYTD, 
         CTE.InvoicedYTD, 
         CTE.OrderedYTD, 
         CTE.YearReported,
         CTE.WeekReported,
         PreviousRow.ReceivedYTD AS PreviousReceivedYTD
FROM CTE
    LEFT OUTER JOIN CTE PreviousRow ON CTE.RowNumber - 1 = PreviousRow.RowNumber


  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 सर्वर 2008 में TO_Char () का उपयोग कैसे करें?

  3. कैसे बताएं कि SQL सर्वर में एक कंप्यूटेड कॉलम नियतात्मक है या नहीं?

  4. SQL सर्वर प्रबंधन स्टूडियो - तालिका को छोड़े बिना फ़ील्ड प्रकार कैसे बदलें

  5. SQL सर्वर में लोअरकेस अक्षरों वाली पंक्तियों को वापस करने के 5 तरीके