SQLServer差费逗号分隔的字段并统计 10

有个表中的一个字段Author,如下IDAuthor1张三2张三,李四3王五4李四5张三,李四,王五现在想查询出这样的结果AuthorCount张三3李四3王五2求高手啊... 有个表中的一个字段Author,如下
ID Author
1 张三
2 张三,李四
3 王五
4 李四
5 张三,李四,王五

现在想查询出这样的结果
Author Count
张三 3
李四 3
王五 2

求高手啊,实在没有分了
展开
 我来答
Daniel_bad
2013-03-06 · TA获得超过635个赞
知道小有建树答主
回答量:382
采纳率:100%
帮助的人:217万
展开全部
create table author(
id int identity,
author nvarchar(20)
)

insert into author values('张三')
insert into author values('张三,李四')
insert into author values('王五')
insert into author values('李四')
insert into author values('张三,李四,王五')

select * from author

select OneTitle,COUNT(OneTitle) as count
from
(
select id,
Author=convert(xml, '<root><v>' + replace(Author,',','</v><v>') + '</v></root>')
from Author
)a
outer apply
(
select OneTitle = C.v.value('.', 'nvarchar(100)')
from a.Author.nodes('/root/v')C(v)
) b
group by OneTitle order by count desc
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
badkano
2013-03-05 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885369
团长

向TA提问 私信TA
展开全部
if object_id('Tempdb..#Num') is not null
drop table #Num
select top 100 ID=Identity(int,1,1) into #Num from syscolumns a,syscolumns b
Select
Author=substring(a.Author,b.ID,charindex(',',a.Author+',',b.ID)-b.ID),count(*)
from
table1 a,#Num b
where
charindex(',',','+a.Author,b.ID)=b.ID
group by substring(a.Author,b.ID,charindex(',',a.Author+',',b.ID)-b.ID);

table1替换成你自己表名,top 100 那个100你就替换个稍微大点的数吧
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式