Paso #1: Crear la tabla dummy_jerarquia
CREATE TABLE [dbo].[dummy_jerarquia](
[id] [int] NULL,
[nombre] [varchar](20) NULL,
[idpadre] [int] NULL
) ON [PRIMARY]
Paso #2: Inserta datos
INSERT [dbo].[dummy_jerarquia] ([id], [nombre], [idpadre]) VALUES (1, N'AMERICA', 0)
INSERT [dbo].[dummy_jerarquia] ([id], [nombre], [idpadre]) VALUES (2, N'America del Nombre', 1)
INSERT [dbo].[dummy_jerarquia] ([id], [nombre], [idpadre]) VALUES (3, N'America del Sur', 1)
INSERT [dbo].[dummy_jerarquia] ([id], [nombre], [idpadre]) VALUES (4, N'America Central', 1)
INSERT [dbo].[dummy_jerarquia] ([id], [nombre], [idpadre]) VALUES (5, N'Caribe', 1)
INSERT [dbo].[dummy_jerarquia] ([id], [nombre], [idpadre]) VALUES (6, N'Canada', 2)
INSERT [dbo].[dummy_jerarquia] ([id], [nombre], [idpadre]) VALUES (7, N'Estados Unidos', 2)
INSERT [dbo].[dummy_jerarquia] ([id], [nombre], [idpadre]) VALUES (8, N'Guatemala', 4)
INSERT [dbo].[dummy_jerarquia] ([id], [nombre], [idpadre]) VALUES (9, N'Salvador', 4)
INSERT [dbo].[dummy_jerarquia] ([id], [nombre], [idpadre]) VALUES (10, N'Argentina', 3)
INSERT [dbo].[dummy_jerarquia] ([id], [nombre], [idpadre]) VALUES (11, N'Brasil', 3)
INSERT [dbo].[dummy_jerarquia] ([id], [nombre], [idpadre]) VALUES (12, N'Colombia', 3)
INSERT [dbo].[dummy_jerarquia] ([id], [nombre], [idpadre]) VALUES (13, N'Republica Dominicana', 5)
INSERT [dbo].[dummy_jerarquia] ([id], [nombre], [idpadre]) VALUES (14, N'Trinidad y Tobago', 5)
Paso #3: Ejecutar el siguiente Query
With Jerarquia ( id, nombre, idpadre, level, sort)
As (
SELECT
D.id,
CAST(D.nombre AS VARCHAR(100)),
D.idpadre,
0 as level,
CAST (D.nombre AS VARCHAR (100)) as sort
FROM dummy_jerarquia AS D
WHERE idpadre=0
UNION ALL
SELECT D.ID,
CAST(REPLICATE('|---',level+1)+D.nombre as varchar(100)),
D.idpadre,
level+1,
CAST (sort + ' \\ ' + '('+CAST(D.ID AS VARCHAR(10))+')'+D.nombre AS VARCHAR (100)) as sort
FROM dummy_jerarquia AS D
INNER JOIN Jerarquia J
ON D.idpadre=J.id)
SELECT J.id, J.nombre,J.idpadre, level, sort
FROM Jerarquia J
ORDER BY SORT
option (maxrecursion 0)
Paso #4: Revisar el resultado obtenido.
El ejemplo es bastante básico, pero espero con solo observar el Query puedo obtener la ayuda que necesitas.

No hay comentarios.:
Publicar un comentario