Seleccione la primera fila de cada grupo en sql [duplicado]
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.
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