Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Numero correlativo en un Select

3,018 views
Skip to first unread message

knito

unread,
Aug 13, 2004, 10:33:10 AM8/13/04
to
Hola Listeros.

Necesito su ayuda, debo construir un Select de una tabla x que lee datos
de una tabla cualquiera, pero debo incluir un campo correlativo que
"enumere" cada registro retornado, pero de manera dinámica.

Espero me puedan ayudar, de antemano. Gracias.

Knito.


Maxi

unread,
Aug 13, 2004, 10:41:03 AM8/13/04
to
Hola, hay varias tecnicas para poder hacer ello.

Te recomiendo que leas estos links

http://www.microsoft.com/spanish/msdn/comunidad/mtj.net/voices/art167.asp

o

http://www.sqlteam.com/item.asp?ItemID=1491

Que los disfrutes :-)

--

Salu2
-----------------------------------------------------------
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
-----------------------------------------------------------
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein

"knito" <knito~@~chile~.~com> escribió en el mensaje
news:%23bM12JU...@tk2msftngp13.phx.gbl...


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.732 / Virus Database: 486 - Release Date: 29/07/2004


knito

unread,
Aug 13, 2004, 10:46:12 AM8/13/04
to
Muchas Gracias.


ulises

unread,
Aug 13, 2004, 10:57:23 AM8/13/04
to
Las soluciones planteadas hacen uso de tablas temporales o
de columnas identity, otra forma de numerarlas sin usar
esas técnicas es realizar un join con la misma tabla, p.e.
usando la tabla authors de la BD pubs :

select count(*) as secuencia, a.au_id, a.au_lname,
a.au_fname
from authors a join authors b
on a.au_id >= b.au_id
group by a.au_id, a.au_lname, a.au_fname

el resultado :

secuencia au_id au_lname au_fname
----------- ----------- -------------- --------------------
1 172-32-1176 White Johnson
2 213-46-8915 Green Marjorie
3 238-95-7766 Carson Cheryl
...

Saludos,
Ulises
>-----Mensaje original-----

Maxi

unread,
Aug 13, 2004, 11:06:06 AM8/13/04
to
Ulises, el segundo articulo muestra tambien tu tecnica!! por eso lo puse
:-), francamente es la que mejor me gusta, el unico problema puede ser el
numero de registros, si es muy grande la cosa se pone un poco pesadita :(

--

Salu2
-----------------------------------------------------------


Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
-----------------------------------------------------------
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein

"ulises" <uli...@online.nospam> escribió en el mensaje
news:56f601c48145$d75adfc0$a301...@phx.gbl...

el resultado :

---

ulises

unread,
Aug 13, 2004, 11:19:58 AM8/13/04
to
Lo que muestra el artículo es un SUBSELECT y si no me
equivoco haría una agregación fila por fila por lo que se
tornará pesada con el aumento de las mismas. La
modificación es a través de un join y sería cuestión de
probar pero no creo que aumente mucho el tiempo con el
aumento de filas ... :) ...

Saludos,
Ulises

>-----Mensaje original-----


>Ulises, el segundo articulo muestra tambien tu tecnica!!
por eso lo puse
>:-), francamente es la que mejor me gusta, el unico
problema puede ser el
>numero de registros, si es muy grande la cosa se pone un
poco pesadita :(
>
>--
>
>Salu2

>----------------------------------------------------------
-
>Maxi
>Buenos Aires - Argentina
>Desarrollador Microsoft 3 Estrellas .NET
>----------------------------------------------------------
-
>Nunca consideres el estudio como una obligación sino como
>una oportunidad para penetrar en el bello y maravillosos
>mundo del saber.
>- Albert Einstein
>
>
>

>"ulises" <uli...@online.nospam> escribió en el mensaje
>news:56f601c48145$d75adfc0$a301...@phx.gbl...
>Las soluciones planteadas hacen uso de tablas temporales o
>de columnas identity, otra forma de numerarlas sin usar
>esas técnicas es realizar un join con la misma tabla, p.e.
>usando la tabla authors de la BD pubs :
>
>select count(*) as secuencia, a.au_id, a.au_lname,
>a.au_fname
>from authors a join authors b
>on a.au_id >= b.au_id
>group by a.au_id, a.au_lname, a.au_fname
>
>el resultado :
>
>secuencia au_id au_lname au_fname
>----------- ----------- -------------- -------------------
-
>1 172-32-1176 White Johnson
>2 213-46-8915 Green Marjorie
>3 238-95-7766 Carson Cheryl

>....

>.
>

Maxi

unread,
Aug 13, 2004, 11:25:33 AM8/13/04
to
Tienes toda la Razon!! el tuyo es mas eficiente ya por solo el hecho de no
tener la subconsulta :-)

Voy a ver si armo una pruebita con 1 millon de registros a ver si chilla ;-)

Gracias Ulises!!

--

Salu2
-----------------------------------------------------------


Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
-----------------------------------------------------------
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein

"ulises" <uli...@online.nospam> escribió en el mensaje

news:5a0801c48148$feecb290$a501...@phx.gbl...

Fernando España

unread,
Aug 13, 2004, 11:45:12 AM8/13/04
to
jajaja, como dicen aca.. paguen cuarto!!..
jajaja, Hoy es viernes!!.. jaja

"Maxi" <max...@infovia.com.ar.sacame> wrote in message
news:ugr9HnU...@TK2MSFTNGP12.phx.gbl...

Melissa Ruiz

unread,
Aug 15, 2004, 11:47:04 AM8/15/04
to
Que ingeniosa se ve esa solucion !!!


"ulises" <uli...@online.nospam> wrote in message
news:56f601c48145$d75adfc0$a301...@phx.gbl...

Javier Loria

unread,
Aug 16, 2004, 11:54:37 AM8/16/04
to
Hola:
Una nota adicional, la condicion del JOIN no tiene que ser llave
Primaria, puede ser cualquier columna o combinacion de columnas.
Adicionalmente si la combinacion de columnas no es unica entonces se
producen "empates" esto es las filas se numeran 1, 4,4,4, 5, 6, ....; que
significar que las filas 2-3-4 empatan por el cuarto lugar y si les da el
"ultimo numero del empate", si esto no es lo deseado puede cambiarse la
condicion por > en vez de >= y se le suma 1. en este caso el empate
produciria 1, 2,2,2,5, 6, .....
Normalmente numerar el el cliente y no en el servidor es mucho mejor.
Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

"ulises" <uli...@online.nospam> wrote in message
news:56f601c48145$d75adfc0$a301...@phx.gbl...

0 new messages