2011-12-14 4 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

+0

TRNとLOCの間には常に1対1の関係がありますか? – APC

答えて

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 

それとも、代わりにROW_NUMBER()のRANK()機能を使用することができますが、構文の残りの部分は同じです。 http://www.techonthenet.com/oracle/functions/rank.php

関連する問題