【问题标题】:Cant seem to select the max value of WELL_CMPLTN_ID似乎无法选择 WELL_CMPLTN_ID 的最大值
【发布时间】:2016-08-24 22:35:46
【问题描述】:
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 的最大值。

【问题讨论】:

  • 所有行或组的最大值?
  • 什么版本的Oracle? Oracle 12 有一个新特性fetch first|last,它可以快速完成此类任务。一般来说,说明您的 Oracle 版本会有所帮助。

标签: sql oracle join max greatest-n-per-group


【解决方案1】:

试试这个

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'
)

【讨论】:

    【解决方案2】:

    你可以试试这个:

    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;
    

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-13
      • 2018-02-21
      • 2015-12-29
      • 1970-01-01
      相关资源
      最近更新 更多