在sql中选择每个组的第一行

Vij*_*jay 15 sql oracle

我有两张桌子.

1-> SM_Employee

 (1) employeeid   
 (2) roleid
 (3) storeid
Run Code Online (Sandbox Code Playgroud)

2-> SM_SalesRepWorkflow

 (1) workflowid
 (2) Salesrepid   foreign key to employeeid
 (3) QuantityAssigned
 (4) QuantityLeft
 (5) month 
 (6) year
Run Code Online (Sandbox Code Playgroud)

通过这些表,我需要从SalesRepId为CurrentMonth和CurrentYear从SM_SalesRepWorkflow顺序中选择每个SalesRep详细信息的第一行.

Workflowid SalesRepId QuantityAssigned QuantityLeft Month Year

WF_101:EMP_101:100:90:May:2013
WF_101:EMP_102:100:100:May:2013
WF_101:EMP_103:100:80:May:2013
WF_102:EMP_101:100:70:May:2013

所以我想要的结果是

WF_101:EMP_101:100:90:May:2013
WF_101:EMP_102:100:100:May:2013
WF_101:EMP_103:100:80:May:2013

因此,SalesRep可以有许多工作流程.但我希望当前月份和年份的每个SalesRep都有第一个.

Rac*_*cha 36

你可以使用这样的ROW_NUMBER()功能:

SELECT *
  FROM(SELECT workflowid, salesRepId, quantityAssigned,
              quantityLeft, month, year
              , ROW_NUMBER()
                OVER (PARTITION BY salesRepId
                          ORDER BY workflowid) AS rownumber
         FROM sm_salesRepWorkflow)
 WHERE rownumber = 1;
Run Code Online (Sandbox Code Playgroud)

小提琴演示