DB2 SQL - Inner Join получает последнюю строку - PullRequest
0 голосов
/ 06 сентября 2018

Я пытаюсь получить последнюю запись из таблицы @POA с теми же PO # и Line # в таблице HPOL07.Записи в @POA имеют порядковый номер.Поэтому я пытаюсь получить запись с последним порядковым номером.Я не уверен, как это сделать?

EXEC SQL Declare RSCURSOR cursor for
SELECT HPOL07.*, @POA.*
FROM HPOL07
INNER JOIN @POA ON PORD = @POA.POAPON  AND PLINE = @POA.POALNO
WHERE PORD = :NBR AND PID <> 'PZ';

EXEC SQL  Open RSCURSOR;

EXEC SQL SET RESULT SETS Cursor RSCURSOR;   

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Этот запрос можно использовать для получения всех записей из HPOL07 и сопоставления одной записи в @ POA

SELECT HPOL07.*, @POA.*
FROM HPOL07

CROSS JOIN LATERAL (
SELECT @POA.*
FROM @POA
WHERE PORD = @POA.POAPON  AND PLINE = @POA.POALNO
ORDER BY @POA.<SEQUENCE NUMBER> DESC
FETCH FIRST 1 ROWS ONLY
) @POA 

WHERE PORD = :NBR AND PID <> 'PZ'
0 голосов
/ 06 сентября 2018

Не буду ругаться, это работает на DB2 400, но я думаю, что это будет.

    SELECT HPOL07.*, @POA.*
    FROM HPOL07
    INNER JOIN @POA ON PORD = @POA.POAPON  AND PLINE = @POA.POALNO
    WHERE PORD = :NBR AND PID <> 'PZ'
    ORDER BY @POA.<SEQUENCE NUMBER> DESC
FETCH FIRST 1 ROWS ONLY
...