SELECT [tt].*, IIF([t1].[Id] IS NULL, NULL, [t1].[Field]+' '+[t1].[Level] +IIF([t2].[Id] IS NULL, '', ' - '+[t2].[Field]+' '+[t2].[Level] +IIF([t3].[Id] IS NULL, '', ' - '+[t3].[Field]+' '+[t3].[Level] +IIF([t4].[Id] IS NULL, '', ' - '+[t4].[Field]+' '+[t4].[Level] +IIF([t5].[Id] IS NULL, '', ' - '+[t5].[Field]+' '+[t5].[Level] ))))) AS [FParents], IIF([t1].[Id] IS NULL, NULL, CAST([t1].[Id] AS VARCHAR) +IIF([t2].[Id] IS NULL, '', ';'+CAST([t2].[Id] AS VARCHAR) +IIF([t3].[Id] IS NULL, '', ';'+CAST([t3].[Id] AS VARCHAR) +IIF([t4].[Id] IS NULL, '', ';'+CAST([t4].[Id] AS VARCHAR) +IIF([t5].[Id] IS NULL, '', ';'+CAST([t5].[Id] AS VARCHAR) ))))) AS [IdsParents], IIF([t1].[Id] IS NULL, 0, 1 +IIF([t2].[Id] IS NULL, 0, 1 +IIF([t3].[Id] IS NULL, 0, 1 +IIF([t4].[Id] IS NULL, 0, 1 +IIF([t5].[Id] IS NULL, 0, 1 ))))) AS [CountParents] FROM heap.dbo.tree [tt] LEFT MERGE JOIN heap.dbo.tree [t1] ON [tt].[ParentId] IS NOT NULL AND [t1].[Id]=[tt].[ParentId] LEFT MERGE JOIN heap.dbo.tree [t2] ON [t1].[ParentId] IS NOT NULL AND [t2].[Id]=[t1].[ParentId] LEFT MERGE JOIN heap.dbo.tree [t3] ON [t2].[ParentId] IS NOT NULL AND [t3].[Id]=[t2].[ParentId] LEFT MERGE JOIN heap.dbo.tree [t4] ON [t3].[ParentId] IS NOT NULL AND [t4].[Id]=[t3].[ParentId] LEFT MERGE JOIN heap.dbo.tree [t5] ON [t4].[ParentId] IS NOT NULL AND [t5].[Id]=[t4].[ParentId] |