如何计算否.分层 SQL -SQL Server 中父级的子项



我在下面的结构中有一个表。我想获取带有子单元计数的所有单元详细信息,在下面的示例中,在 SQL SERVER 2008 中,单元 ID -6 的子计数为 2,单元 ID 5 为 0(因为为空(

UnitID | Name   | ParentUnitId
++++++++++++++++++++++++++++
1      | Unit A | NULL
2      | Unit B | 1
3      | Unit C | NULL
4      | Unit D | 1
5      | Unit E | NULL
6      | Unit F | 3
7      | Unit G | 3
基本上,

您只需要获取具有"ParentUnitId"值的记录数,然后将连接从主表左转至该子查询。像这样的东西...

IF OBJECT_ID('tempdb..#Temp', 'U') IS NOT NULL DROP TABLE #Temp;
SELECT
    *
INTO #Temp
FROM 
( VALUES
     ( 1, 'Unit A', NULL), 
     ( 2, 'Unit B', 1),
     ( 3, 'Unit C', NULL),
     ( 4, 'Unit D', 1),
     ( 5, 'Unit E', NULL),
     ( 6, 'Unit F', 3),
     ( 7, 'Unit G', 3)
) AS t ([UnitID], [Name], [ParentUnitID])
SELECT a.*, COALESCE(b.ChildCount, 0) AS 'ChildCount' FROM #Temp a
LEFT JOIN 
(
SELECT ParentUnitID, COUNT(*) AS 'ChildCount' FROM #Temp
WHERE ParentUnitID IS NOT null
GROUP BY ParentUnitID
) b ON a.UnitID = b.ParentUnitID

圣诞颂歌

相关内容

最新更新