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 originalCREATE TABLE #temp
(
codigo VARCHAR(20),
nivel INT
)
INSERT INTO #temp VALUES ('1',1)
INSERT INTO #temp VALUES ('1.1',2)
INSERT INTO #temp VALUES ('1.2',2)
INSERT INTO #temp VALUES ('1.2.3',3)
INSERT INTO #temp VALUES ('1.2.3.1',4)
INSERT INTO #temp VALUES ('1.2.3.1.1',5)
INSERT INTO #temp VALUES ('2',1)
INSERT INTO #temp VALUES ('2.1',2)
INSERT INTO #temp VALUES ('2.2',2)
INSERT INTO #temp VALUES ('2.2.1',3)
SELECT
CASE WHEN
new_nivel-2<0 THEN codigo ELSE
SUBSTRING(codigo,1,new_nivel-2) END AS padre,codigo,nivel FROM(
SELECT
nivel + nivel-1 AS new_nivel,
codigo,nivel FROM #temp
) t1
REsultado:
padre codigo nivel
1 1 1
1 1.1 2
1 1.2 2
1.2 1.2.3 3
2 2 1
2 2.1 2
1.2.3 1.2.3.1 4
1.2.3.1 1.2.3.1.1 5
2 2.2 2
2.2 2.2.1 3