Oracle 查找查询结果中第一个出现的ID

Oracle 查找查询结果中第一个出现的ID,oracle,oracle11g,Oracle,Oracle11g,正在寻找有关此Oracle(11g)查询的一些帮助 我有以下SQL SELECT id, test_date FROM test_data WHERE id IN (7,27,28,32,34,44) GROUP BY id, test_date ORDER BY test_date ASC; 这给了我以下信息 ID / TEST_DATE --------------- 27 / 16-AUG-06 44 / 18-AUG-06 28 / 19-AUG-06 44 / 23-J

正在寻找有关此Oracle(11g)查询的一些帮助

我有以下SQL

SELECT id, test_date 
  FROM test_data 
 WHERE id IN (7,27,28,32,34,44) 
 GROUP BY id, test_date ORDER BY test_date ASC;
这给了我以下信息

ID / TEST_DATE
---------------
27 / 16-AUG-06
44 / 18-AUG-06
28 / 19-AUG-06
44 / 23-JUN-08
27 / 27-JUN-08
28 / 27-JUN-08
07 / 21-APR-09
07 / 11-MAR-10
44 / 02-OCT-10
27 / 08-OCT-10
34 / 04-APR-11
07 / 11-APR-11
07 / 18-MAR-12
32 / 30-JUN-13
我想要的是以下结果

ID / TEST_DATE
---------------
27 / 16-AUG-06
44 / 18-AUG-06
28 / 19-AUG-06
07 / 21-APR-09
34 / 04-APR-11
32 / 30-JUN-13
基本上是每个ID的第一次出现

SELECT id, min(test_date)
  FROM test_data 
 WHERE id IN (7,27,28,32,34,44) 
 GROUP BY id 
 ORDER BY 2 ASC
;

似乎是这样做的

试过了,但我得到了一个奇怪的“Not in GROUP BY expression”错误,从我所看到的,它说我需要在我的组中使用test_date BY(这似乎非常错误!)你真的想要每个ID的第一次出现,还是每个ID的第一次出现?您的测试数据恰好是按日期排序的,因此在本例中没有区别,但情况可能并非如此。
SELECT t1.id, (select t2.test_date from test_data t2 where t2.id = t1.id and rownum = 1) test_date
  FROM test_data t1
 WHERE t1.id IN (7,27,28,32,34,44) 
 GROUP BY t1.id  ORDER BY t1.id ASC;