我有两个表,如下所示。
declare @Table1 table ( ID int, ColName varchar(20), ParentID int)
insert into @Table1
select 1,'Rec1',-1
union
select 2,'Rec2',1
union
select 3,'Rec3',1
union
select 4,'Rec4',2
declare @Table2 table ( ColID int, Name varchar(10),ID int)
insert into @Table2
select 10,'asdf',1
union
select 20,'atsdf',2
union
select 30,'asurdf',3
union
select 40,'ahfsdf',4
union
select 50,'aesdf',2
union
select 60,'asdsfgf',1
union
select 70,'asdfdf',3
我希望显示最高级别的父级计数以及父级和子级计数等相关记录。 第二个表数据应该位于第一个表的父ID,下一个Child来自First表,子计数和第二个表记录,第三个子,Child的计数和来自第二个表的相关记录。
ID Name Count
1 Rec1 6
10 asdf NULL
20 atsdf NULL
2 Rec2 3
50 aesdf NULL
60 asdsfgf NULL
答案 0 :(得分:-1)
SELECT id,colname,cnt FROM (
SELECT tab1.id,
tab1.colname,
COUNT (*) cnt,
tab1.id sortorder
FROM @Table1 tab1 INNER JOIN @Table2 tab2 ON tab1.id = tab2.id
GROUP BY tab1.id, tab1.colname
UNION ALL
SELECT colid,
name,
NULL,
id
FROM @Table2
) sub
ORDER BY sortorder, id