Seleccione la primera fila de cada grupo en sql [duplicado]

Resuelto Vijay asked hace 11 años • 2 respuestas

Tengo dos mesas .

1-> SM_Empleado

 (1) employeeid   
 (2) roleid
 (3) storeid

2-> SM_SalesRepWorkflow

 (1) workflowid
 (2) Salesrepid   foreign key to employeeid
 (3) QuantityAssigned
 (4) QuantityLeft
 (5) month 
 (6) year

Según estas tablas, necesito seleccionar la primera fila de cada detalle de SalesRep del pedido SM_SalesRepWorkflow por SalesRepId para CurrentMonth y CurrentYear.

Ejemplo

Workflowid SalesRepId CantidadCantidad asignadaMes restante Año

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

Entonces el resultado que quiero es

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

Por tanto, puede haber muchos flujos de trabajo para un representante de ventas. Pero quiero el primero para cada representante de ventas del mes y año en curso.

Vijay avatar May 14 '13 02:05 Vijay
Aceptado

Puedes usar la ROW_NUMBER()función así:

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;

Demostración de violín

Rachcha avatar May 13 '2013 19:05 Rachcha