我发布了查询和结果,但我试图将其限制为仅限创建者最新的状态和时间戳。
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
因此每个创建者我只能有一行,并且应该是最新记录。我在做什么错?
尝试
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可以尝试对不起