SQL Server - Como agrupar sin ordenar

   
Vista:

Como agrupar sin ordenar

Publicado por Pedro (4 intervenciones) el 06/05/2016 16:51:11
Hola y saludos a todos.

Tengo un problema del que no encuentro la solución sin utilizar tablas temporales. Os lo describo.
El resultado de una consulta que he hecho es el siguiente

19
13
14
17
14
13
22

Bien, pues sobre este resultado quiero que se agrupen (eliminar duplicados) pero manteniéndose el orden original. Es decir, lo que se debe obtener es lo siguiente
19
13
14
17
22

Un problema simple, pero lo cierto es que no consigo ponerlo en pie.

Gracias por vuestra ayuda y saludos de nuevo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias

Como agrupar sin ordenar

Publicado por Isaias (3182 intervenciones) el 06/05/2016 17:51:27
¿Que version de SQL Server manejas?
¿Porque no quieres crear tablas temporales?

Te mando una solucion con tablas temporales

1
2
3
4
5
6
7
8
9
10
11
12
13
14
drop table #Numeros
Create table #Numeros (consecutivo int identity (1,1), numero int)
insert into #Numeros (numero) values(
19),
(13),
(14),
(17),
(14),
(13),
(22)
 
SELECT Numero FROM #Numeros
group by Numero
ORDER BY MAX(consecutivo)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como agrupar sin ordenar

Publicado por Pedro (4 intervenciones) el 08/05/2016 14:37:57
Gracias por tu respuesta pero pedía una forma de hacer esto SIN usar tablas temporales.

La consulta expuesta es una reducción de una sentencia mucho más compleja, es decir es el resultado de una subconsulta utilizada en un procedimiento almacenado bastante más complejo que el resultado único de una relación de números. Me preocupa mucho el impacto en el rendimiento utilizando tablas temporales, por eso estoy buscando una solución que permita optimizar los tiempos de ejecución.

Te pongo un par de artículos donde puedes ver varios motivos por que NO usar tablas temporales:
http://programacion.net/articulo/tablas_temporales_en_el_sql_server_281
http://comunidad.fware.pro/dev/tablas-temporales-vs-variables-tabla/


Por último, para que salgan igual que en la primera lista una pequeña corrección a la consulta que me has pasado, en lugar de MAX hay que utilizar MIN.

Gracias de nuevo y saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

Como agrupar sin ordenar

Publicado por Isaias (3182 intervenciones) el 09/05/2016 18:57:25
Una tabla temporal se crea en memoria y tiene el mismo trato que una tabla normal, esto es, se le pueden crear indices.

¿Cuando no se recomiendan tablas temporales?

Cuando el numero de registros a alojar en ellas sean demasiados, ya que repercutira en la memoria ram.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar