2016-08-24 1 views
0
SELECT w.well_id, 
w.WELL_NR, 
w.WELL_NM, 
w.WELL_API_NR, 
ws.WELL_SGMNT_SIDE_TRCK_CD, 
wc.WELL_CMPLTN_CD, 
wc.WELL_SGMNT_ID, 
wc.WELL_CMPLTN_ID 
FROM WELL W 
JOIN WELL_SGMNT ws 
ON ws.well_id=w.well_id 
JOIN WELL_CMPLTN wc 
ON ws.WELL_SGMNT_ID=wc.WELL_SGMNT_ID 
WHERE w.well_id ='13030'; 

результат этого запроса, как показано ниже, но я хочу, чтобы выбрать максимальное значение WELL_CMPLTN_ID. enter image description hereБрус, кажется, чтобы выбрать максимальное значение WELL_CMPLTN_ID

+0

Максимальное значение среди всех строк или группы? – Mike

+0

Какая версия Oracle? У Oracle 12 есть новая функция «fetch first | last», которая быстро выполняет такие задачи. В общем, это помогает указать вашу версию Oracle. – mathguy

ответ

0

Попробуйте один

SELECT w.well_id, 
w.WELL_NR, 
w.WELL_NM, 
w.WELL_API_NR, 
ws.WELL_SGMNT_SIDE_TRCK_CD, 
wc.WELL_CMPLTN_CD, 
wc.WELL_SGMNT_ID, 
wc.WELL_CMPLTN_ID 
FROM WELL W 
JOIN WELL_SGMNT ws 
ON ws.well_id=w.well_id 
JOIN WELL_CMPLTN wc 
ON ws.WELL_SGMNT_ID=wc.WELL_SGMNT_ID 
WHERE w.well_id ='13030' AND wc.WELL_CMPLTN_ID = 
(SELECT MAX(wc.WELL_CMPLTN_ID) 
    FROM WELL W 
    JOIN WELL_SGMNT ws 
    ON ws.well_id=w.well_id 
    JOIN WELL_CMPLTN wc 
    ON ws.WELL_SGMNT_ID=wc.WELL_SGMNT_ID 
    WHERE w.well_id ='13030' 
) 
0

вы можете попробовать это:

SELECT * FROM(
    SELECT w.well_id, 
    w.WELL_NR, 
    w.WELL_NM, 
    w.WELL_API_NR, 
    ws.WELL_SGMNT_SIDE_TRCK_CD, 
    wc.WELL_CMPLTN_CD, 
    wc.WELL_SGMNT_ID, 
    wc.WELL_CMPLTN_ID 
    FROM WELL W 
    JOIN WELL_SGMNT ws 
    ON ws.well_id=w.well_id 
    JOIN WELL_CMPLTN wc 
    ON ws.WELL_SGMNT_ID=wc.WELL_SGMNT_ID 
    WHERE w.well_id ='13030 
    ORDER BY wc.WELL_CMPLTN_CD DESC 
    ) 
WHERE ROWNUM = 1; 

Я надеюсь, что это помогает!