我有一个表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'。

#1楼 票数:3 已采纳

这将在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;

#2楼 票数:0

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

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

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

  ask by SHinny translate from so

未解决问题?本站智能推荐:

2回复

SQL查询:面对问题以从不同的表中获取所需的记录

我有两张桌子 日历(Calname,CCode,PCode) 查找(LCode,名称) 日历表包含类似的记录, 查找表包含类似的记录, 我必须以一种可以从包含行记录的查找表中获取所有代码名称的方式来获取记录。 所需的输出 我不能仅仅基于代码应用内部
4回复

仅获取已分配的最新部门的SQL语句

在我的数据库中,我具有以下行和列: https : //i.imgur.com/ktUZY9d.jpg 我的问题是同一名员工有3个不同的部门,但他目前仅在1个部门中工作。我如何更改此SQL语句以仅包括其所在的最新部门,该部门始于2018年,结束于2100年,如ALLOCATION_STAR
3回复

在这种情况下,如何更改我的sql以获取所需的信息?

我有一个如下表: 可以看出,每个value出现3次不同的date 。 我想编写一个查询,该查询返回具有最大date的唯一value s,该值将是上表的以下内容: 我该怎么办? 这是更新的问题: 我遇到的真正问题比上面的简化版本复杂一些。 我以为一旦知道简化版本的答
3回复

SQL查询以基于子记录上的多个条件来获取父记录

我有两个表家长P和孩子C 父级 儿童 我想获取XXX值为1且YYY不是2或zzz值不是7的父记录。在这种情况下,我应该得到1和3作为结果。 请提出建议。
2回复

使用PL / SQL函数获取员工薪酬记录

我是stackoverflow的新手,也是PL / SQL的新手。 我正在研究一些PL / SQL问题并尝试解决这个问题。 基本上,我想创建一个名为GET_ANNUAL_INCOME的PL / SQL函数来返回指定员工的年度薪酬,根据以下公式计算员工的月薪和佣金: GET_ANN
2回复

SQL子查询以获取第一条记录

我需要执行类似下面的查询。 但这给了我A.ID在oracle中是无效错误。 我需要从内部查询中获取第一条记录,因为它将返回多个记录。 有人可以让我知道如何绑定这些表以实现我的目标。 先感谢您。
1回复

获取最新的项目,即使从中为null

我有三个不同的表,我尝试根据下面的不同表值获取输出,但是当我只想要最新的表时,它现在返回表等级的所有字段。 输出应如下所示: desire output: ╔════╦════════╦═══════╦════════════╦═════════╗ ║ id ║ value ║ name
2回复

从表中检索最新记录(Oracle SQLPlus)

我有这张桌子: 线程(ThreadID,ThreadType,PostDate,PostTime,主题,详细信息,UserID) 主键=线程ID,外键=用户ID 我想从“每个用户”中检索最新的帖子及其帖子详细信息,并且尝试了以下语句 但是结果返回似乎不同,第一个应该是正确的,