Ver Mensaje Individual
  #4 (permalink)  
Antiguo 08/08/2012, 12:07
Avatar de Libras
Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 9 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