为每个重复的组获取 max(timestamp) (IBM DB2)

Get max(timestamp) for each group with repetition (IBM DB2)

ANSWER: 需要使用 LEAD 和 PARTITION BY 函数。请参考Gordon的回答。

我有以下数据集:

我想获取结果集中的第 1、3、5、7 行。

结果集应该如下所示:

11/10/2020 19:36:11.548955  IN_REVIEW
11/8/2020 19:36:11.548955   EXPIRED
11/6/2020 19:36:11.548955   IN_REVIEW
11/4/2020 19:36:11.548955   ACTIVE

好吧,由于您是按 interac_Reg_stat 分组的,因此您永远不会获得 IN_REVIEW 状态的 2 个单独的行。要获得您想要的结果,您需要添加一个子查询来查找具有特定 interac_Reg_stat 且位于另一个特定 interac_Reg_stat.

之前的所有项目

使用window 功能。 LEAD() 从“下”行获取值,因此仅在值发生变化时进行过滤:

SELECT t.* 
FROM (SELECT t.*,
             LEAD(interac_Reg_stat) OVER (PARTITION BY Acct_No ORDER BY xcn_tmstmp) as next_interac_Reg_stat
      FROM TABLE
     ) t
WHERE interac_Reg_stat <> next_interac_Reg_stat OR
      next_interac_Reg_stat IS NULL;