获取最新结果,仅由DB2 / 400中的用户分组

问题描述 投票:-1回答:1

我发布了查询和结果,但我试图将其限制为仅限创建者最新的状态和时间戳。

    select t2.creator, t1.event_id, t2.status, max(t2.createdTS)
    from schema.event T1
    inner join schema.event_to_event_statust T2
    on t1.event_id = t2.event_id
    group by t2.creator, t1.event_id, t2.status;



    creator     |   event_id    |   status  | createdTS
    -----------------------------------------------------
    123                 1           New         2019-01-29 17:27:50.899408
    123                 1           Live        2019-01-29 17:29:50.899408
    123                 1           Closed      2019-01-29 17:45:50.899408
    456                 5           New         2019-01-29 17:32:50.899408
    456                 5           Live        2019-01-29 17:48:50.899408

我期望的这个结果实际上是

    creator     |   event_id    |   status  | createdTS
    -----------------------------------------------------
    123                 1           Closed      2019-01-29 17:45:50.899408
    456                 5           Live        2019-01-29 17:48:50.899408

因此每个创建者我只能有一行,并且应该是最新记录。我在做什么错?

sql db2 db2-400
1个回答
0
投票

尝试

with temp as (
 select t2.creator, t1.event_id, t2.status, t2.createdTS
        row_number() over (partition by t2.creator order by t2.createdTS desc) as rownum
    from schema.event T1
    inner join schema.event_to_event_statust T2
    on t1.event_id = t2.event_id
    group by t2.creator, t1.event_id, t2.status
)
select creator, event_id, status, createdTS
  from temp
 where rownum = 1

@@ MarkBarinstein:感谢SQL纠正

替代方法可能是

select t2.creator, t1.event_id, t2.status, t2.createdTS
    from event T1
    inner join event_to_event_status T2
    on t1.event_id = t2.event_id
 INNER JOIN (select event_id, creator, max(createdts) AS createdts
              FROM  event_to_event_status
              GROUP BY event_id, creator) AS x
              ON t2.event_id = x.event_id AND t2.creator = x.creator AND t2.createdts = x.createdts

我没有iSeries可以尝试对不起

© www.soinside.com 2019 - 2024. All rights reserved.