Find all leaf node records using hierarchyid
hierarchyid, sql-server, sql-server-2008
Solution
SELECT A.HieracrchyId, A.HierarchyId.ToString()
FROM dbo.TableA AS A
LEFT OUTER JOIN dbo.TableA AS B
ON A.HierarchyId = B.HierarchyId.GetAncestor(1)
WHERE B.HierarchyId IS NULL;
Problem
How would I go about querying for only records that are "only leaf nodes" (ie. no children)? I have tried a query like this: ``` select * from TableA tt where tt.HierarchyId.GetDescendant(null, null) not in ( Select t.HierarchyId from TableA t ) ``` But this still seemed to return some nodes that had children. I am using the built-in hierarchyid data type (part of ms sqlserver)