获得第一组行

时间:2011-12-14 09:18:00

标签: oracle

我有一个我有交易的情况,这个交易包括几个步骤。我想返回此事务的第一次出现,例如:

Trn Loc step

111 0   1

111 0   2

111 0   3

222 3   1

222 3   2

333 5   1

333 5   2

333 5   3

我希望得到这个结果:

tran                 loc

111                  0    

222                  3   

333                  5              

我认为这应该是通过分区功能来完成的,但我不知道......请帮忙吗?

1 个答案:

答案 0 :(得分:3)

select t.trn, t.loc 
from (select trn, loc, ROW_NUMBER() OVER (PARTITION BY trn, loc ORDER BY trn, loc) as rnum
from table ) t
where t.rnum = 1

或者您可以使用RANK()函数而不是ROW_NUMBER(),其余语法相同。 http://www.techonthenet.com/oracle/functions/rank.php