Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Ordenar Registros Intercalados

Estas en el tema de Ordenar Registros Intercalados en el foro de SQL Server en Foros del Web. Saludos, Les comento mi caso, tengo una gran lista de registros como estos: Ciudad Nombre ------------------------------------------ Cartago------------Maria Jimenez San Jose-----------Juan Perez San Jose-----------Gabriela Alvarado San ...
  #1 (permalink)  
Antiguo 08/08/2012, 11:18
 
Fecha de Ingreso: agosto-2012
Mensajes: 4
Antigüedad: 11 años, 8 meses
Puntos: 0
Pregunta Ordenar Registros Intercalados

Saludos,

Les comento mi caso, tengo una gran lista de registros como estos:

Ciudad Nombre
------------------------------------------
Cartago------------Maria Jimenez
San Jose-----------Juan Perez
San Jose-----------Gabriela Alvarado
San Jose-----------Josefina Mora
Heredia------------Berta Lopez
Heredia------------Cristina Alvarez
Alajuela------------Jose Montero
Limon--------------Manuel Fernandez
San Jose-----------Abigail Hidalgo

Lo que necesito es ordenarlos de forma que me quede un o dos registros seguidos de cada ciudad, por ejemplo:

Ciudad Nombre
------------------------------------------
San Jose-----------Juan Perez
Cartago------------Maria Jimenez
Heredia------------Berta Lopez
Alajuela------------Jose Montero
Limon--------------Manuel Fernandez
San Jose-----------Gabriela Alvarado
Heredia------------Cristina Alvarez
San Jose-----------Abigail Hidalgo

Los registros por ciudad no es necesario que vayan ordenados alfabeticamente sino intercalados.

Agradezco muchisimo su ayuda,
  #2 (permalink)  
Antiguo 08/08/2012, 11:31
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Ordenar Registros Intercalados

y cual es la logica para ordernar de esa manera? o el porque?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 08/08/2012, 11:49
 
Fecha de Ingreso: agosto-2012
Mensajes: 4
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Ordenar Registros Intercalados

Se estaran mostrando continuamente en una pantalla, por lo que se debe ver la participacion de cada ciudad y no todos los registros de una ciudad en particular.....

Conoce alguna manera de realizarlo?


Muchas Gracias!
  #4 (permalink)  
Antiguo 08/08/2012, 12:07
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Ordenar Registros Intercalados

algo asi:

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. ciudad VARCHAR(20),
  4. nombre VARCHAR(30)
  5. )
  6.  
  7. CREATE TABLE #temp2
  8. (
  9. ciudad VARCHAR(20),
  10. nombre VARCHAR(30)
  11. )
  12.  
  13. INSERT INTO #temp VALUES ('Cartago','Maria Jimenez')
  14. INSERT INTO #temp VALUES ('San Jose','Juan Perez')
  15. INSERT INTO #temp VALUES ('San Jose','Gabriela Alvarado')
  16. INSERT INTO #temp VALUES ('San Jose','Josefina Mora')
  17. INSERT INTO #temp VALUES ('Heredia','-Berta Lopez')
  18. INSERT INTO #temp VALUES ('Heredia','-Cristina Alvarez')
  19. INSERT INTO #temp VALUES ('Alajuela','-Jose Montero')
  20. INSERT INTO #temp VALUES ('Limon','Manuel Fernandez')
  21. INSERT INTO #temp VALUES ('San Jose','Abigail Hidalgo')
  22.  
  23. DECLARE @x INT
  24. DECLARE @y INT
  25.  
  26. SELECT @x=MAX(rn) FROM(
  27. SELECT ROW_NUMBER() OVER(partition BY ciudad ORDER BY ciudad DESC) AS rn, ciudad, nombre FROM #temp
  28. ) t1
  29.  
  30. SET @y=1
  31. while @y <= @x
  32. BEGIN
  33. INSERT INTO #temp2
  34. SELECT ciudad,nombre FROM(
  35. SELECT ROW_NUMBER() OVER(partition BY ciudad ORDER BY ciudad DESC) AS rn, ciudad, nombre FROM #temp
  36. ) t1 WHERE rn=@y
  37. SET @y=@y+1
  38. END
  39.  
  40. SELECT * FROM #temp2
  41.  
  42. resultado:
  43.  
  44. Alajuela    -Jose Montero
  45. Cartago Maria Jimenez
  46. Heredia -Berta Lopez
  47. Limon   Manuel Fernandez
  48. San Jose    Abigail Hidalgo
  49. Heredia -Cristina Alvarez
  50. San Jose    Juan Perez
  51. San Jose    Gabriela Alvarado
  52. San Jose    Josefina Mora

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 08/08/2012, 12:44
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Ordenar Registros Intercalados

Funciona no funciona, que peros le pones? o como ya funciono ni siquiera un gracias???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 08/08/2012, 14:45
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Respuesta: Ordenar Registros Intercalados

Una alternativa...

Código:
IF OBJECT_ID('tempdb..#temp') is not null drop table #temp
CREATE TABLE #temp (ciudad varchar(20), nombre varchar(30))

INSERT INTO #temp (ciudad, nombre)
VALUES ('Cartago','Maria Jimenez')
, ('San Jose','Juan Perez')	, ('San Jose','Gabriela Alvarado')
, ('San Jose','Josefina Mora'), ('Heredia','-Berta Lopez')
, ('Heredia','-Cristina Alvarez'), ('Alajuela','-Jose Montero')
, ('Limon','Manuel Fernandez')	, ('San Jose','Abigail Hidalgo')
, ('Alajuela','-Jose Montero 2'), ('Cartago','Maria Jimenez 2')
, ('Limon','Manuel Fernandez2'), ('Heredia','-Cristina Alvarez3')
, ('Limon','Manuel Fernandez3'), ('Cartago','Maria Jimenez 3')
, ('Cartago','Maria Jimenez 4')

SELECT  ciudad
	,nombre 
FROM   #temp 
order by ROW_NUMBER() OVER(PARTITION BY ciudad 
                                         ORDER BY ciudad ASC, nombre)
		,ciudad ASC
Resultado:

Código:
ciudad               nombre
-------------------- ------------------------------
Alajuela             -Jose Montero
Cartago              Maria Jimenez
Heredia              -Berta Lopez
Limon                Manuel Fernandez
San Jose             Abigail Hidalgo
Alajuela             -Jose Montero 2
Cartago              Maria Jimenez 2
Heredia              -Cristina Alvarez
Limon                Manuel Fernandez2
San Jose             Gabriela Alvarado
Cartago              Maria Jimenez 3
Heredia              -Cristina Alvarez3
Limon                Manuel Fernandez3
San Jose             Josefina Mora
Cartago              Maria Jimenez 4
San Jose             Juan Perez

Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #7 (permalink)  
Antiguo 08/08/2012, 14:57
 
Fecha de Ingreso: agosto-2012
Mensajes: 4
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Ordenar Registros Intercalados

Acaba de probarlos y adivinen.......


Libras y Andres95 Muchisimas gracias por su ayuda!!!


Ambos me funcionaron muy bien!!!!!

Etiquetas: alternado, intercalado, row_number, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:00.