Tema: Agrupacion
Ver Mensaje Individual
  #2 (permalink)  
Antiguo 03/04/2014, 10:51
Avatar de Libras
Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Agrupacion

tu lo que quieres es ordenar los datos segun el padre...o que aparezcan ordenados como les corresponde, para eso puedes usar lo siguiente:

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. id INT,
  4. codigo VARCHAR(20),
  5. padreid INT
  6. )
  7.  
  8. INSERT INTO #temp VALUES (1 , '5' , NULL)
  9. INSERT INTO #temp VALUES (2 , '6-2' , 7)
  10. INSERT INTO #temp VALUES (3 ,'6-1' ,  7)
  11. INSERT INTO #temp VALUES (4 ,'5-1' , 1)
  12. INSERT INTO #temp VALUES (5 ,'5-1-1' ,  4)
  13. INSERT INTO #temp VALUES (6 ,'5-2' ,  1)
  14. INSERT INTO #temp VALUES (7 ,'6' ,  NULL)
  15.  
  16.  
  17. SELECT * INTO #temp2 FROM(
  18. SELECT
  19. t1.id,t1.padreid,t1.codigo,t2.padreid AS padre2,t2.id AS id2,t2.codigo AS codigo2
  20. FROM #temp AS t1
  21. LEFT JOIN #temp AS t2 ON (t1.id=t2.padreid)
  22. WHERE t2.padreid IS NOT NULL
  23. ) AS completa
  24.  
  25. SELECT id AS padre ,padreid AS id,codigo FROM (
  26. SELECT *,ROW_NUMBER() OVER(partition BY codigo ORDER BY id) AS rn FROM
  27. (
  28. SELECT id,padreid,codigo FROM #temp2
  29. UNION
  30. SELECT padre2,id2,codigo2 FROM #temp2
  31. ) AS query
  32. ) query2 WHERE rn=1

y obtienes lo que necesitas :)

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me