如何比较最后一条记录和最后一条记录 - 1?

Tom*_*ugo 2 sql sql-server

假设我有一个来自连接的表选择如下:

No.Transaction   Item Name   PRICE
TC0001           Book        15
TC0001           Pencil      2
TC0001           Eraser      1
TC0002           Book        12
TC0002           Eraser      1.5
TC0003           Pencil      1.8
TC0003           Book        20
Run Code Online (Sandbox Code Playgroud)

我想比较相同商品名称的最后价格和之前的价格.例如Book is 20 and 12,Pencil is 1.8 and 2

我怎样才能做到这一点?

shA*_*A.t 6

我认为你需要这样的查询:

;WITH t AS (
    SELECT *
        , ROW_NUMBER() OVER (PARTITION BY [Item Name] 
                             ORDER BY [No.Transaction] DESC) As seq
    FROM yourTable)
SELECT t1.[Item Name]
    , t1.PRICE As lastPrice
    , t2.PRICE As preLastPrice
    , t1.PRICE - ISNULL(t2.PRICE, 0) As changePrice
FROM t t1
    LEFT JOIN
     t t2 ON t1.[Item Name] = t2.[Item Name] AND t1.seq = t2.seq - 1
WHERE (t1.seq = 1);
Run Code Online (Sandbox Code Playgroud)

[SQL小提琴演示]