The table in SQL Server has mapping of parent to child references of many generations.
I have to achieve result:
Level No || Child Count
So, I have following query for it :
SELECT
'L1' LEVEL, COUNT(ChildRef) CHILD
FROM
[dbo].[TOMatriX]
WHERE
ParentRef = 1
UNION ALL
SELECT
'L2' LEVEL, COUNT(ChildRef) CHILD
FROM
[dbo].[TOMatriX]
WHERE
ParentRef IN (SELECT ChildRef FROM [dbo].[TOMatriX] WHERE ParentRef = 1)
UNION ALL
SELECT
'L3' LEVEL, COUNT(ChildRef) CHILD
FROM
[dbo].[TOMatriX]
WHERE
ParentRef IN (SELECT ChildRef FROM [dbo].[TOMatriX]
WHERE ParentRef IN (SELECT ChildRef FROM [dbo].[TOMatriX]
WHERE ParentRef = 1)
)
UNION ALL
SELECT
'L4' LEVEL, COUNT(ChildRef) CHILD
FROM
[dbo].[TOMatriX]
WHERE
ParentRef IN (SELECT ChildRef FROM [dbo].[TOMatriX]
WHERE ParentRef IN (SELECT ChildRef FROM [dbo].[TOMatriX]
WHERE ParentRef IN (SELECT ChildRef
FROM [dbo].[TOMatriX]
WHERE ParentRef = 1)
)
)
How can make this query dynamic & not hardcoded like this because levels can go above 4 also.
How to use Common Table Expressions or any recursion in this?