数据库字段包含分组

ljb3326 2013-03-08 05:32:48
字段1 字段2
a 1
b,a 2
a,c 1
c,b 1
d 3

字段1进行分组,但是需要的结果是:
字段1 数量
a 4
b 3
c 2
d 3
a,b,c,d是任意字符可以是汉字,数字
这样的结果sql语句怎么写,数据库sqlserver.

...全文
285 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljb3326 2013-03-11
  • 打赏
  • 举报
回复
引用 4 楼 maco_wang 的回复:
SQL code?123456789101112131415161718192021222324create table tb(字段1 varchar(10),字段2 int)insert into tbselect 'a',1 union allselect 'b,a',2 union allselect 'a,c',1 union allselect 'c,b',1 ……
在数据库中也不只是这几条数据,还有不只是a,b,c,d字段1也有可能是数字,其他字符的.你的这个方法我没有完全理解,能说的详细点不.
ljb3326 2013-03-11
  • 打赏
  • 举报
回复
http://blog.csdn.net/htl258/article/details/5537235 问题解决 谢谢各位!
叶子 2013-03-09
  • 打赏
  • 举报
回复

create table tb(字段1 varchar(10),字段2 int)
insert into tb
select 'a',1 union all
select 'b,a',2 union all
select 'a,c',1 union all
select 'c,b',1 union all
select 'd',3

;with maco as
(
	SELECT A.字段2, B.value as 字段1 FROM( SELECT 字段2, 
	[value] = CONVERT(xml,'<root><v>' + REPLACE(字段1, ',', '</v><v>') + '</v></root>') FROM tb
	)A OUTER APPLY(
	SELECT value = N.v.value('.', 'varchar(100)') FROM A.[value].nodes('/root/v') N(v))B
)
select 字段1,sum(字段2) as  数量 from maco group by 字段1
/*
字段1      数量
-------- -----------
a        4
b        3
c        2
d        3
*/

  • 打赏
  • 举报
回复
declare @s nvarchar(max)
set @s=(select ','+col1 from tb for xml path(''))
select col[字段1],count(1)数量 from(
select col=(case when stuff(@s,1,number,'') like'%,%' then
left(stuff(@s,1,number,''),charindex(',',stuff(@s,1,number,''))-1) else stuff(@s,1,number,'') end)
from master..spt_values where type='p' and number<len(@s) and substring(@s,number,1)=',')t
group by col
AcHerat 2013-03-08
  • 打赏
  • 举报
回复
这个拆分的有很多例子,楼主可以搜下,比较常用的就是借助 master..spt_values 这个系统表来处理。
AcHerat 2013-03-08
  • 打赏
  • 举报
回复
没有SQL环境,简单说下思路。 1、先将字段1拆分,例如: a 1 b 2 a 2 a 1 c 1 。。。 2、再进行group by的sum统计。

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧