首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何比较最后一条记录和最后一条记录- 1?

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

Stack Overflow用户
提问于 2015-09-01 11:31:37
回答 3查看 1K关注 0票数 2

假设我有一个来自join select的表,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
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

我想比较相同商品名称的上一次价格和前一次价格。例如Book is 20 and 12Pencil is 1.8 and 2

我该怎么做呢?

EN

回答 3

Stack Overflow用户

发布于 2015-09-01 11:55:19

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

代码语言:javascript
代码运行次数:0
运行
复制
;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);
票数 6
EN

Stack Overflow用户

发布于 2015-09-01 11:41:41

您必须找到列来对结果进行排序,然后使用DENSE_RANK()并获得最后两行,如下所示

代码语言:javascript
代码运行次数:0
运行
复制
SELECT *
(
    SELECT transactionId
        ,itm_name
        ,price
        ,DENSE_RANK() OVER (PARTITION BY itm_name ORDER BY created_date DESC) AS [rank]
    FROM tbl
) res
WHERE res.[rank] IN (1,2)
ORDER BY res.[rank] 
票数 3
EN

Stack Overflow用户

发布于 2015-09-01 11:34:52

查询操作。添加group by、limit(2)、order DESC。你应该得到你需要的东西。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32323098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档