27,579
社区成员
发帖
与我相关
我的任务
分享
--最通用的方式
declare @tb table (id int, value varchar(10))
insert into @tb values(1, 'aa')
insert into @tb values(1, 'bb')
insert into @tb values(2, 'aaa')
insert into @tb values(2, 'bbb')
insert into @tb values(2, 'ccc')
select id , [value]=
stuff((select ','+[value] from @tb t where id =tv.id for xml path('')), 1, 1, '')
from @tb as tv
group by id
/*
id ccname
1 aa,bb
2 aaa,bbb,ccc
*/
--最通用的方式
declare @tb table (id int, value varchar(10))
insert into @tb values(1, 'aa')
insert into @tb values(1, 'bb')
insert into @tb values(2, 'aaa')
insert into @tb values(2, 'bbb')
insert into @tb values(2, 'ccc')
select id , [value]=
stuff((select ','+[value] from @tb t where id =tv.id for xml path('')), 1, 1, '')
from @tb as tv
group by id
/*
id ccname
1 aa,bb
2 aaa,bbb,ccc
*/
IF EXISTS ( SELECT * FROM sysobjects WHERE id = OBJECT_ID('[two]') AND OBJECTPROPERTY(id, 'IsUserTable') = 1 )
DROP TABLE two
CREATE TABLE two
(id INT IDENTITY(1, 1)NOT NULL ,
UserName VARCHAR(50) ,
Code VARCHAR(50) NULL
)
SET IDENTITY_INSERT two ON
INSERT two( id, UserName, code )VALUES ( 1, 'User1', 'A' )
INSERT two( id, UserName, code )VALUES ( 1, 'User1', 'B' )
INSERT two( id, UserName, code )VALUES ( 1, 'User2', 'C' )
INSERT two( id, UserName, code )VALUES ( 1, 'User2', 'D' )
INSERT two( id, UserName, code )VALUES ( 1, 'User2', 'E' )
INSERT two( id, UserName, code )VALUES ( 1, 'User3', 'F' )
INSERT two( id, UserName, code )VALUES ( 1, 'User3', 'G' )
INSERT two( id, UserName, code )VALUES ( 1, 'User3', 'H' )
INSERT two( id, UserName, code )VALUES ( 1, 'User3', 'I' )
SET IDENTITY_INSERT two OFF
--按某一列出结果的
SELECT B.username ,LEFT(UserList, LEN(UserList) - 1) AS list
FROM ( SELECT username ,
( SELECT code + ',' FROM two WHERE username = A.username ORDER BY ID FOR XML PATH('')
) AS UserList
FROM two A GROUP BY username
) B
/*
username list
User1 A,B
User2 C,D,E
User3 F,G,H,I*/