我有一个我有交易的情况,这个交易包括几个步骤。我想返回此事务的第一次出现,例如:
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
我认为这应该是通过分区功能来完成的,但我不知道......请帮忙吗?
答案 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