Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

TSQL заявка за препратка към предишни редове

За SQL Server 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

В противен случай

Вече се запознах добре с този отговор, преди да коментирате обратно, така че просто го приех.

Трябва да използвате CTE и да го съедините със себе си чрез отместването на номера на реда, което търсите.

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. ЗА XML PATH(''):Екраниране на специални символи

  2. Да се ​​параметризира ли името на таблицата в .NET/SQL?

  3. Какво трябва да знаете за С NOCHECK, когато активирате ограничение CHECK в SQL Server

  4. Как да промените местоположението на архивиране динамично в sql сървър

  5. Как да зададете bool стойност в SQL