我试图弄清楚如何获取一个有效的结果集,并将查询更改为仅在一个ID有多个行的情况下返回最近的查询。
我有这个
SELECT T . ITEM_ID , TS . NAME as STATUS, tts.row_change
FROM schema .ITEM T
INNER JOIN schema . ITEMT_TO_ITEM_STATUST TTS
ON TTS.ITEMT_ID = T.ITEMT_ID
INNER JOIN schema . ITEM_STATUST TS
ON TS . ITEM_STATUST_ID = TTS . ITEM_STATUST_ID;这给了我这个:
ID | STATUS | row_change
-----------------------------------------
125 P 2019-08-25 12:00:00
125 A 2019-08-25 12:08:00
123 P 2019-08-25 12:00:00这在技术上是正确的,但现在我想要的/需要的。
我如何修改它以获得ID 123的行,但是ID 125的行具有12:08的时间戳?
发布于 2019-08-29 01:43:27
使用窗口函数:
SELECT T.ITEM_ID, TS.NAME as STATUS, tts.row_change
FROM schema.ITEM T JOIN
(SELECT TTS.*,
ROW_NUMBER() OVER (PARTITION BY TTS.ITEMT_ID ORDER BY tts.row_change DESC) as seqnum
FROM schema.ITEMT_TO_ITEM_STATUST TTS
) TTS
ON TTS.ITEMT_ID = T.ITEMT_ID JOIN
schema.ITEM_STATUST TS
ON TS.ITEM_STATUST_ID = TTS.ITEM_STATUST_ID
WHERE seqnum = 1;https://stackoverflow.com/questions/57701910
复制相似问题