Ver Mensaje Individual
  #2 (permalink)  
Antiguo 30/08/2012, 12:36
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, 8 meses
Puntos: 774
Respuesta: problema hijo padres sqlserver

a ver necesitas una funcion asi para tu trabajo? y si la hago el credito es para mi o para ti??? Pero aqui esta lo que necesitas




Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. codigo VARCHAR(20),
  4. nivel INT
  5. )
  6.  
  7. INSERT INTO #temp VALUES ('1',1)
  8. INSERT INTO #temp VALUES ('1.1',2)
  9. INSERT INTO #temp VALUES ('1.2',2)
  10. INSERT INTO #temp VALUES ('1.2.3',3)
  11. INSERT INTO #temp VALUES ('1.2.3.1',4)
  12. INSERT INTO #temp VALUES ('1.2.3.1.1',5)
  13.  
  14. INSERT INTO #temp VALUES ('2',1)
  15. INSERT INTO #temp VALUES ('2.1',2)
  16. INSERT INTO #temp VALUES ('2.2',2)
  17. INSERT INTO #temp VALUES ('2.2.1',3)
  18.  
  19.  
  20. SELECT
  21. CASE WHEN
  22. new_nivel-2<0 THEN codigo ELSE
  23. SUBSTRING(codigo,1,new_nivel-2) END AS padre,codigo,nivel FROM(
  24. SELECT
  25. nivel + nivel-1 AS new_nivel,
  26. codigo,nivel FROM #temp
  27. ) t1
  28.  
  29.  
  30. REsultado:
  31.  
  32. padre   codigo  nivel
  33. 1   1   1
  34. 1   1.1 2
  35. 1   1.2 2
  36. 1.2 1.2.3   3
  37. 2   2   1
  38. 2   2.1 2
  39. 1.2.3   1.2.3.1 4
  40. 1.2.3.1 1.2.3.1.1   5
  41. 2   2.2 2
  42. 2.2 2.2.1   3
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me