Hola a tod@s, aquí os dejo como Enumerar registros de Sql con row_number, de aquellas tablas que no tienen Id o que quieres que te los reenumere de otra manera, bueno vamos a ello.
1 Lo primero que te dejo es la estructura de datos que vamos a manejar para que el ejemplo no se repita con el mismo texto y verlo mas sencillo le daré un alias a la tabla (Nombres)
Recuerda que en el from de la select que vamos a realizar sustituye nombres por lo que viene a continuación
Aquí los Datos, que sustituirás por nombres.
select ‘Roberto’ as nombre ,’Hombre’ as Sexo union all
select ‘Elena’ as nombre ,’Mujer’ as Sexo union all
select ‘Julian’ as nombre ,’Hombre’ as Sexo union all
select ‘Marcos’ as nombre ,’Hombre’ as Sexo union all
select ‘Marta’ as nombre ,’Mujer’ as Sexo union all
select ‘Monica’ as nombre ,’Mujer’ as Sexo
2 Primer ejemplo enumerar todos los registros,
Vamos a enumerar los registros ordenandolos por Nombre, de tal que lo que necesitamos es el row_number y el campo de ordenacion , es facil queda algo asi
select ROW_NUMBER() over(order by Nombre) as Id,Nombre,sexo from (“Nombres”)
El resultado de select es
1 Elena Mujer
2 Julian Hombre
3 Marcos Hombre
4 Marta Mujer
5 Monica Mujer
6 Roberto Hombre
3 Bien ahora vamos a enumerarlo por nombre y sexo
select ROW_NUMBER() over(order by sexo,Nombre) as Id,Nombre,sexo from(“Nombres”)
y su resultado es:
Id Nombre sexo
1 Julian Hombre
2 Marcos Hombre
3 Roberto Hombre
4 Elena Mujer
5 Marta Mujer
6 Monica Mujer
4 Ya solo nos queda el ultimo ejemplo ordenado por grupos para ello aplicaremos la sentencia Partition by dentro de la sección del Over de tal manera como indico a continuación
select ROW_NUMBER() over(partition by sexo order by sexo,Nombre) as Id,Nombre,sexo from (“nombres”)
Los grupos quedan asi
Id Nombre sexo
1 Julian Hombre
2 Marcos Hombre
3 Roberto Hombre
1 Elena Mujer
2 Marta Mujer
3 Monica Mujer
como ves a creado dos enumerados agrupados por sexo….
Bueno hasta aquí el post. espero que te sirva
Visita mi canal de youtube aquí
quizás te interese ……crear indices faltante para mejorar el rendimiento de SQL aqui