попробуйте так, надеюсь, вам это поможет
SELECT Post.PostId, Post.[Body], Count(Children.PostId) over() as totalids
FROM
dbo.Post Post,
dbo.Post Children
WHERE
Children.ParentId = Post.PostId
как я работал, проверьте это
create table xmltable (attr1 int identity ,attr2 varchar(50),attr3 xml)
insert into xmltable select 'i',(SELECT ( SELECT 'sometext' FOR XML PATH('body'),TYPE)FOR XML PATH(''),ROOT('SampleXML'))
union all
select 'j',(SELECT ( SELECT 'sometext' FOR XML PATH('body'),TYPE)FOR XML PATH(''),ROOT('SampleXML'))
union all
select 'k',(SELECT ( SELECT 'sometext' FOR XML PATH('body'),TYPE)FOR XML PATH(''),ROOT('SampleXML'))
union all
select 'l',(SELECT ( SELECT 'sometext' FOR XML PATH('body'),TYPE)FOR XML PATH(''),ROOT('SampleXML'))
create table xmlid (x int ,y varchar(50))
insert into xmlid select 1,'x'
union all
select 1,'y'
union all
select 2,'z'
union all
select 2,'xyz1'
union all
select 3,'xyz2'
union all
select 1,'xyz3'
select * from xmltable
select * from xmlid
создать таблицы, затем
select * from xmltable
select * from xmlid
select attr1,attr2, attr3,count(attr1) over(partition by attr2 ) as total_qtyover from xmltable a,xmlid b
where a.attr1=b.x
также смотрите это Как агрегировать без использования `GROUP BY`?