Требование Я хочу получить первые четыреста GROUP_ID из таблицы (больше, чем входной GROUP_ID), и в той же таблице для каждого GROUP_ID есть два LOG_ID, из которых я хочу самый низкий , Как только я получу самый низкий LOG_ID, я буду использовать этот LOG_ID для получения данных из другой таблицы, где это внешний ключ.
ИСПОЛЬЗОВАННЫЙ ПОДХОД Сначала я сформировал подмножество лучших 400 GROUP_ID, которые больше, чем входные GROUP_ID. Затем я использовал все GROUP_ID во втором подмножестве, где я получу самый низкий LOG_ID для каждого GROUP_ID. И, наконец, когда у меня самый низкий LOG_ID, я использовал его для получения подробностей из другой таблицы.
QUERY USED
WITH INIT AS (
SELECT GROUP_ID
FROM PV_ADAPTER_LOG
WHERE GROUP_ID > 2004141441192825
AND ADAPTER_ID IN ('2568','2602')
ORDER BY GROUP_ID
FETCH FIRST 400 ROWS ONLY
)
,INIT2 AS (
SELECT MIN(L.LOG_ID) AS LOG_ID
FROM PV_ADAPTER_LOG L
JOIN INIT ON INIT.GROUP_ID =L.GROUP_ID
GROUP BY L.GROUP_ID
)
SELECT A.LOG_ID,A.OPER_SEQ AS CALL_SEQUENCE,A.GROUP_ID ,B.INTERFACE_ID,A.INSTRUCTION_NAME, B.ADAPTER_DETAIL AS XML_CONTENT,B.SEQ AS XML_SEQUENCE
FROM INIT2
JOIN PV_ADAPTER_LOG A ON A.LOG_ID=INIT2.LOG_ID
JOIN PV_ADAPTER_LOG_DETAIL B ON B.LOG_ID=A.LOG_ID
Правильный ли мой подход или Есть ли другой способ добиться этого.