查询以提取每个提交的ID的最高值

时间:2012-04-30 16:20:36

标签: sql oracle

我遇到的问题与我打算做的事情不同。 我的数据库中每个员工ID(pmt_id)的雇主ID(eh_id)。

我的查询如下:

 SELECT *
  FROM employer_history table1
  WHERE eh_id =
    (
      SELECT eh_id
      FROM employer_history table2
      WHERE table1.eh_id = table2.eh_id
      group by table2.eh_id
    )
  and table1.eh_pmt_id in (131,3725)

我得到的是:

eh_id | eh_pmt_id
   123 | 131
   124 | 131
125 | 3725
126 | 3725

我期待的是:

eh_id | eh_pmt_id

124 | 131
126 | 3725

我很感激任何帮助,因为我自己无处可以

干杯

2 个答案:

答案 0 :(得分:2)

您可以使用分析函数:

SELECT *
FROM (  SELECT *, ROW_NUMBER() OVER(PARTITION BY peh_pmt_id ORDER BY eh_id DESC) Corr
        FROM employer_history 
        WHERE eh_pmt_id in (131,3725)) t1
WHERE Corr = 1

答案 1 :(得分:1)

SELECT peh_pmt_id, MAX(eh_id)
FROM employer_history
WHERE eh_pmt_id in (131,3725)
GROUP BY peh_pmt_id