1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
WITH tree (data, Id, Niveau, idori, pathstr) AS (
SELECT empalias, empid, 0, empid,
CASE WHEN CAST(COALESCE(hr_id, -1) AS VARCHAR(MAX)) = '-1' THEN '' ELSE CAST(COALESCE(hr_id, -1) AS VARCHAR(MAX)) END
FROM Table_Test
WHERE hr_id IS NULL
UNION ALL
SELECT empalias, empid, T.Niveau + 1, T.idori,
CASE WHEN CAST(COALESCE(hr_id, -1) AS VARCHAR(MAX)) = '-1' THEN '' ELSE CAST(COALESCE(hr_id, -1) AS VARCHAR(MAX)) END + ',' + T.pathstr
FROM Table_Test V
INNER JOIN tree T
ON T.id = V.hr_id)
SELECT id AS empid, data AS empalias,
CASE WHEN LEN(pathstr) > 1 THEN LEFT(pathstr, LEN(pathstr) - 1) ELSE 'null' END AS path FROM tree |
Partager