【发布时间】:2020-06-24 07:19:01
【问题描述】:
我有两个表 bc_transactions 和 bc_messages。我使用下面的查询来加入这两个表
SELECT distinct(bt.USER_TRANS_ID),bm.TS,bm.STATUS
FROM bc_transactions bt
inner JOIN bc_messages bm
ON bt.USER_TRANS_ID=bm.USER_MESSAGE_ID
where bt.protocol_name = 'Gateway'
and bt.STATUS=bm.STATUS
AND bt.startdate >=TRUNC(SYSDATE-2)
AND bt.startdate <=TRUNC(SYSDATE-1)
AND bt.STATUS like 'ERROR TRANSPORT'
AND bt.HOSTNAME='HEB'
order by bt.USER_TRANS_ID ASC;
bc_messages 表有多个状态为 ERROR TRANSPORT 的行,它们在不同的时间戳 (bm.TS) 具有相同的 USER_MESSAGE_ID。我试图只获取最新的行。
|USER_TRANS_ID | TS | STATUS |
-------------------------------------------------------------
| ID1 | 10-03-2020 15:01:23 | ERROR TRANSPORT |
| ID1 | 10-03-2020 15:15:23 | ERROR TRANSPORT |
| ID1 | 10-03-2020 15:30:23 | ERROR TRANSPORT |
| ID1 | 10-03-2020 15:35:23 | ERROR TRANSPORT |
| ID2 | 10-03-2020 16:10:23 | ERROR TRANSPORT |
| ID2 | 10-03-2020 16:11:23 | ERROR TRANSPORT |
【问题讨论】:
-
Fetch the row which has the Max value for a column 这是一个常见问题解答。在考虑发布之前,请阅读手册和谷歌任何错误消息或您的问题/问题/目标的许多清晰、简洁和精确的措辞,有和没有您的特定字符串/名称和站点:stackoverflow.com 和标签;阅读许多答案。如果您发布问题,请使用一个短语作为标题。请参阅How to Ask 和投票箭头鼠标悬停文本。
标签: sql oracle outer-join