
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 展开
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 展开
展开全部
--这个与字段的类型的长度关系很大,不然出来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
展开全部
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
*/
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询