oracle 如何从表中获取第一个组?

dzhpxtsq  于 2022-11-03  发布在  Oracle
关注(0)|答案(1)|浏览(269)

我有一个itemlocation表,如下所示:

  1. item address date
  2. a x 1
  3. b x 1
  4. a y 2
  5. b y 2
  6. ...

我想返回的结果集

  1. item address date
  2. a x 1
  3. b x 1

其中它包括按日期排序的 * 第一个 * 地址组中的所有项目。
我看到了类似于rownum的东西,但它是针对组中的第一个,而不是表的第一个组。类似于:

  1. select * from (select * from itemlocation group by address order by date) where group_number <= 1;

我如何才能做到这一点?

7qhs6swi

7qhs6swi1#

我们使用rank()查找所有日期最早的行,然后按rnk_dte = 1进行过滤

  1. select item
  2. ,address
  3. ,"date"
  4. from (
  5. select t.*
  6. ,rank() over(order by "date") as rnk_dte
  7. from t
  8. ) t
  9. where rnk_dte = 1

| 项目|地址|日期|
| - -|- -|- -|
| 一种|X射线|一个|
| B| X射线|一个|
Fiddle

展开查看全部

相关问题