2011-12-14 39 views
0

我有一个事务,并且这个事务由多个步骤组成。我想回到本次交易的首次出现,例如:获取第一组出现的行

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

您的结果可以通过选择TRN和LOC,然后用GROUP BY对它们进行分组来实现。 – Ollie 2011-12-14 09:40:46

回答

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