sql查询结果逗号拼接出来

tablemidqidckidA1KD001ck001A1KD001ck003B1QS123cd111B1QS123cd112C2RT001rt115C2RT001cf0... table
mid qid ckid
A1 KD001 ck001
A1 KD001 ck003
B1 QS123 cd111
B1 QS123 cd112
C2 RT001 rt115
C2 RT001 cf001
C2 RS156 yu116

当mid和QID相同时,拼接ckid,要求结果如下
mid qid ckid
A1 KD001 ck001,ck003
B1 QS123 cd111,cd112
C2 RT001 rt115,cf001
C2 RS156 yu116
展开
 我来答
我是丑九怪
推荐于2018-03-07 · 分享从无到有,界限从有到无
我是丑九怪
采纳数:327 获赞数:792

向TA提问 私信TA
展开全部
--这个与字段的类型的长度关系很大,不然出来ckid中间的空格太长不好看
create table table1
(
mid char(2),
qid char(5),
ckid char(5)
)
insert into table1
select 'A1','KD001','ck001' union all
select 'A1','KD001','ck003' union all
select 'B1','QS123','cd111' union all
select 'B1','QS123','cd112' union all
select 'C1','RT001','rt115' union all
select 'C1','RT001','cf001' union all
select 'C1','RS156','yu116'

--使用 for xml path  
select a.mid,a.qid,(select ckid+',' from table1 b where a.mid=b.mid and a.qid=b.qid for xml path('')) ckid from table1 a group by a.mid ,a.qid
--或者下面这个使用stuff for xml path 
select a.mid,a.qid,stuff((select ','+ckid from table1 b where a.mid=b.mid and a.qid=b.qid for xml path('') ),1,1,'') ckid from table1 a group by a.mid ,a.qid

用户名以诛
2016-07-22 · TA获得超过312个赞
知道小有建树答主
回答量:251
采纳率:0%
帮助的人:51.1万
展开全部
Create table B([id] int,[name] nvarchar(1))
Insert B
select 1,N'a' union all
select 1,N'b' union all
select 2,N'c' union all
select 2,N'd' union all
select 2,N'e'

Select ID,STUFF((SELECT ','+Name FROM B WHERE ID=a.ID FOR XML PATH('')) ,1,1,'') AS Name
from B AS a
GROUP BY ID
/*
ID Name
1 a, b
2 c ,d ,e
*/
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式