繁体   English   中英

获取基于状态的最新记录所需的SQL?

SQL needed for getting latest records based on Status?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有一个表TRX,它对于给定的SRCID样本数据集具有多个值TRXID,如下所示。

TRXID       STATUS  TIMESTAMP                           SRCID
839         EN      30-OCT-14 11.08.13.597000000 AM     B0D35D0168G
1189        MO      30-OCT-14 11.13.19.554000000 AM     B0D35D0168G
1549        CA      30-OCT-14 12.13.42.246000000 PM     B0D35D0168G

1666        EN      30-OCT-14 02.43.22.271000000 PM     A0D77E2168G
2221        CA      30-OCT-14 05.49.16.712000000 PM     A0D77E2168G
2244        EN      31-OCT-14 11.21.18.146000000 AM     A0D77E2168G  ...

我想基于最新的TIMESTAMP获得所有具有最新状态='CA'的SRCID。 所以,例如,如果我们运行上述数据集的查询,我们只会得到'B0D35D0168G'。

2 个回复

这将在Oracle中有效:

SELECT srcid FROM (
    SELECT srcid, status, ROW_NUMBER() OVER ( PARTITION BY srcid ORDER BY timestamp DESC ) AS rn
      FROM trx
) WHERE status = 'CA' AND rn = 1;

如果您还需要检索其他列,它将起作用(例如,如果您需要知道timestamp的最后一个值是什么)。

SELECT trxid, srcid, timestamp FROM (
    SELECT trxid, srcid, timestamp, status, ROW_NUMBER() OVER ( PARTITION BY srcid ORDER BY timestamp DESC ) AS rn
      FROM trx
) WHERE status = 'CA' AND rn = 1;

这是我几年来成功使用的“最新”模式。 如果键和日期字段形成索引,则它非常快。

select  *
from    trx t1
where   t1.status = 'CA'
   and  t1.timestamp =(
      select  Max( timestamp )
      from    trx
      where   status = t1.status
         and  timestamp <= SysDate );

如果未来日期不可能,则可省略子查询的最后一行。 无论哪种方式,查询应该只执行索引搜索。

1 SQL获取最新记录

可以肯定,我的问题标题很糟糕,但是无论如何,我都有一个称为发票的表,并且在该表中,每个发票都有一个ID,每个ID都有一个客户ID,因此客户将有多个发票。 我正在尝试获取最新的发票余额,我写的代码不起作用,有人可以告诉我我做错了什么吗? ...

2 SQL获取最新记录

我当前正在使用DBISAM sql编译器。 它与ms sql编译器非常相同,唯一的区别是我不能有任何嵌套的join语句。 下面的查询是一个嵌套查询,可获取最新的贷款记录和利率。 我想知道是否还有另一种方法可以不用嵌套的select语句来编写它。 ...

3 SQL:获取最新记录

这是我的关系模型: 每次请求状态更改时,都会存储此更改。 现在,我需要按其当前状态列出请求。 类似于“获取当前状态的所有请求=已接收”。 到目前为止,我只设法创建了一个查询,该查询返回给定状态的请求,但是这是当前状态还是旧状态都没有关系...所以我需要某种方式使用Created ...

4 SQL获取最新记录

我在这里努力从这张表中取出两个结果。 我有一个表格,其中包含不同日期的不同类型,项目和值。 首先,我想只有最新的日期,显示类型,项目的组合。 我已经尝试过这个查询,但它会显示所有日期。 以下是我希望它的样子。 然后我们有一个更棘手的问题,在这里我完全迷失了,不确定是否 ...

9 根据日期时间列SQL获取最新记录

我正在尝试选择最新记录。 现在,它正在返回所有记录。 这是因为,由于我没有放入过滤器来获取最新的信息,因此我不确定该怎么做。 这是我的代码: 我想从表中获取最新记录,我想最有效的方法是获取最新a.myDate 。 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM