Condição SQL para resultado em lista de hierarquia

23/01/2020

6

Caros colegas, bom dia.

Preciso de um help com a query abaixo.
Fiz uma Query para exibir uma hierarquia de ativos em até 10 níveis. Porém se um item termina no oitavo nível por exemplo a query não exibe nenhum resultado para nos níveis anteriores.

Preciso fazer um condição para que caso um ativo não tenha os 10 níveis ainda seja exibido.

Banco de Dados SQL Server 2012.

segue query:

WITH ListaHierarquia_AST AS
(
SELECT AA.Id,
AA.Code,
AA.Description,
AA.TreeLevel,
1 AS Level,
AA.SiteId
FROM TabAssets AA
WHERE AA.ParentAssetId IS NULL AND AA.IsActive = 1

UNION ALL

SELECT AA1.Id,
AA1.Code,
AA1.Description,
AA1.TreeLevel,
Level + 1,
AA1.SiteId
FROM TabAssets AA1
INNER JOIN ListaHierarquia_AST AST ON AA1.ParentAssetId = AST.Id

)

SELECT AST.Id AS IdAsset,
AST.Code AS AssestCode,
AST.[Description] AS Descrição,
AST.TreeLevel AS NivelAtivo,
-- AST.SiteId,

N1.Id AS IdAtivoFilho,
N1.Code As CodAtivoFilho,
N1.[Description] AS DescAtivoFilho,
N1.TreeLevel AS NivelFilho,
--N1.SiteId,

N2.Id AS IdAtivoFilho2,
N2.Code As CodAtivoFilho2,
N2.[Description] AS DescAtivoFilho2,
N2.TreeLevel AS NivelFilho2,
-- N2.SiteId,

N3.Id AS IdAtivoFilho3,
N3.Code As CodAtivoFilho3,
N3.[Description] AS DescAtivoFilho3,
N3.TreeLevel AS NivelFilho3,

N4.Id AS IdAtivoFilho4,
N4.Code As CodAtivoFilho4,
N4.[Description] AS DescAtivoFilho4,
N4.TreeLevel AS NivelFilho4,

N5.Id AS IdAtivoFilho5,
N5.Code As CodAtivoFilho5,
N5.[Description] AS DescAtivoFilho5,
N5.TreeLevel AS NivelFilho5,

N6.Id AS IdAtivoFilho6,
N6.Code As CodAtivoFilho6,
N6.[Description] AS DescAtivoFilho6,
N6.TreeLevel AS NivelFilho6,

N7.Id AS IdAtivoFilho7,
N7.Code As CodAtivoFilho7,
N7.[Description] AS DescAtivoFilho7,
N7.TreeLevel AS NivelFilho7,

N8.Id AS IdAtivoFilho8,
N8.Code As CodAtivoFilho8,
N8.[Description] AS DescAtivoFilho8,
N8.TreeLevel AS NivelFilho8,

N9.Id AS IdAtivoFilho9,
N9.Code As CodAtivoFilho9,
N9.[Description] AS DescAtivoFilho9,
N9.TreeLevel AS NivelFilho9,

N10.Id AS IdAtivoFilho10,
N10.Code As CodAtivoFilho10,
N10.[Description] AS DescAtivoFilho10,
N10.TreeLevel AS NivelFilho10


FROM ListaHierarquia_AST AST

INNER JOIN TabAssets N1 ON N1.ParentAssetId = AST.Id
INNER JOIN TabAssets N2 ON N2.ParentAssetId = N1.Id
INNER JOIN TabAssets N3 ON N3.ParentAssetId = N2.Id
INNER JOIN TabAssets N4 ON N4.ParentAssetId = N3.Id
INNER JOIN TabAssets N5 ON N5.ParentAssetId = N4.Id
INNER JOIN TabAssets N6 ON N6.ParentAssetId = N5.Id
INNER JOIN TabAssets N7 ON N7.ParentAssetId = N6.Id
INNER JOIN TabAssets N8 ON N8.ParentAssetId = N7.Id
INNER JOIN TabAssets N9 ON N9.ParentAssetId = N8.Id
INNER JOIN TabAssets N10 ON N10.ParentAssetId = N9.Id
Daniel Leite

Daniel Leite

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários,
consulte nossa política de privacidade.

Aceitar