Wednesday, February 20, 2013

Numerar registros De una consulta con particion

Hay una función SQL que se llama ROW_NUMBER(). Nos permite numerar en orden (ascedente o descendente) las filas o registros de un query sql ejecutado.

Por ejemplo, en un mes mis empleados hicieron sus visitas de mantención a nuestros clientes. Quiero numerar sus visitas.

Visita Empleado Cliente
1 Juan Perez  Empresa001
2 Juan Perez Empresa002
3 Juan Perez EmpresaAAA
4 Juan Perez Empresa951
5 Pedro Palotes Empresa357
6 Pedro Palotes Empresa555
7 Tobias Sanchez EmpresaXYZ
8 Julio Cortez EmpresaQWE

Pero resulta que el ROW_NUMBER está numerando las filas sin hacer alguna distinción. Yo quisiera que se numeren de acuerdo a cierto campo en este caso el empleado. Quedería así...

Visita Empleado Cliente
1 Juan Perez Empresa001
2 Juan Perez Empresa002
3 Juan Perez EmpresaAAA
4 Juan Perez Empresa951
1 Pedro Palotes Empresa357
2 Pedro Palotes Empresa555
1 Tobias Sanchez EmpresaXYZ
1 Julio Cortez EmpresaQWE

Muy bien, para ello utilizamos el "partition by" del ROW_NUMBER... así (parte del SELECT):

  row_number() over (partition by v.id_responsable order by v.fecha asc) as Visita




Había sido sencillo, no?
HaPPy CoDiNg

No comments:

Post a Comment