试试这个方法希望对你有帮助
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
也可以看到How to aggregrate without using `GROUP BY`?