ORACLE - 在LOOP(或类似)中找到具体结果

时间:2016-01-25 07:49:18

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

我是甲骨文的新手,我正在编写一些东西,但我需要做一些超出我的事情。

首先,我必须使用Oracle 8i

我们从一个表格开始,其数据类似于:

Column1  Column2
      A        7
      A        9
      A       13
      B        5
      B        6
      C        1
      C        4
      C        9
      C       40

对于每个字母(column1)

,我需要从此表中获取FIRST 2值

Value1 = n1 Value2 = n2

例如,A值为7和9,但B为5和6

抱歉,我无法画一张桌子(

而且我不知道有多少字母可以有这个表格,所以我想最好的方式是它可能是所有表格的循环,只取第一排和第二排(表格是排列的,总是需要第一个和第二个值每封信)但我不知道该怎么办......

可能是按column1和rownum< 3进行查询过滤?我不确定此查询是否总是只采用前2个值或采用2个随机值...

1 个答案:

答案 0 :(得分:1)

您可以使用窗口功能。

select column_1, column_2
from (
   select column_1, column_2,
          row_number() over (partition by column_1 order by column_2) as rn
   from the_table
) t
where rn <= 2;

您可以在标记greatest-n-per-group

下找到更多针对此类问题的示例