如何使用相同的t-sql查找每个父节点的子节点数?

时间:2014-02-28 07:39:49

标签: sql

我有以下结果集:

Parent  Child   Childcount
1          1         2
1          2    
2          1         3
2          2    
2          3    
.       
.
.
.
.

通过使用groupby子句,我可以在同一个查询中获取父子,但不能获取子计数? 我可以使用单独的查询获取父级的子计数,但我想在单个查询中获取整个集合 我怎样才能实现同样的目标?到目前为止,我已尝试过以下查询:

SELECT parent.NAME AS [Parent]
    ,child.NAME AS [Child]
    ,count(row_number() OVER (
            ORDER BY parent.NAME
            )) AS childcount
FROM table1 parent
INNER JOIN child
    ON parent.id = child.id
GROUP BY parent.NAME
    ,child.NAME
ORDER BY parent.NAME

此查询引发了我的错误。任何人都可以向我提供帮助吗?谢谢。 :)

1 个答案:

答案 0 :(得分:0)

你要求两件事,一件是“每个父/子组合是什么”,另一件是“每个父母,有多少孩子”。它基本上是两个查询。

您可以再次加入子表,并将COUNT(child2.id)添加到您的选择中。