2016-06-22 14 views
0

sthを返すクエリSELECT ...があるとします。SQL:各グループ内で返された行を列挙します

role  name 
-------- ------- 
MANAGER Alice 
WORKER Bob 
WORKER Evan 
WORKER John 
MANAGER Max 
WORKER Steve 

は、各グループ内の行を列挙します(他の役割について、すなわち経営者、労働者と人々は他の役割に関係なくして列挙されている)別の列を追加することが可能です。このような?このように:

role  name  no. 
-------- ------- ---- 
MANAGER Alice  1 
WORKER Bob  1  // second row, but the first worker 
WORKER Evan  2 
WORKER John  3 
MANAGER Max  2  // fifth row, but only the second manager 
WORKER Steve  4 

Oracleの拡張機能の使用は問題ありません。

答えて

1

は、ウィンドウ関数を使用します。

select role, name, 
     row_number() over (partition by role order by name) as rn 
from the_table 
order by name; 
+0

は正常に動作します、ありがとうございます。 – doublep

関連する問題