假设我有一个来自连接的表选择如下:
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
我怎样才能做到这一点?
我认为你需要这样的查询:
;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)