有一表,id,title,key,time,... 其中key字段存入的数据为“aa,bb,cc”“aa,bb”“aa”“bb“ “a,b,c,cc”......数据用逗号隔开
要求统计key字段中所有数据,重复数据统计重复次数。最终统计列表为:aa 3
bb 3
cc 2
a 1
......
用什么方法可以简单的实现,多谢
要求统计key字段中所有数据,重复数据统计重复次数。最终统计列表为:aa 3
bb 3
cc 2
a 1
......
用什么方法可以简单的实现,多谢
调试欢乐多
drop table A
gocreate table A(id int,[key] varchar(20))
insert into A(id,[key]) values(1,'aa,bb,cc')
insert into A(id,[key]) values(2,'aa,bb')
insert into A(id,[key]) values(3,'aa')
insert into A(id,[key]) values(4,'bb')
insert into A(id,[key]) values(5,'a,b,c,cc')
go
-- 建立一个辅助的临时表就可以了
SELECT TOP 8000 id = identity(int,1,1)
INTO # FROM syscolumns a, syscolumns b select [key] , count(*) as 数量 from
(
SELECT
A.ID,
[key] = SUBSTRING(A.[key], B.ID, CHARINDEX(',', A.[key] + ',', B.ID) - B.ID)
FROM A, # B
WHERE SUBSTRING(',' + a.[key], B.id, 1) = ','
) t
group by [key]
order by [key]
GOdrop table A,#
/*
key 数量
-------------------- -----------
a 1
aa 3
b 1
bb 3
c 1
cc 2(所影响的行数为 6 行)
*/