27,579
社区成员
发帖
与我相关
我的任务
分享
-----------------------------------
Type Name
A A_1
B B_1
A A_2
A A_3
A A_4
B B_2
B B_3
想要的效果如下:
-----------------------------------
Type Name_String
A A_1;A_2;A_3;A_4
B B_1;B_2;B_3
create table tb(Type varchar(10), Name varchar(10))
insert into tb values('A' , 'A_1')
insert into tb values('B' , 'B_1')
insert into tb values('A' , 'A_2')
insert into tb values('A' , 'A_3')
insert into tb values('A' , 'A_4')
insert into tb values('B' , 'B_2')
insert into tb values('B' , 'B_3')
go
select type, [Name] = stuff((select ';' + [Name] from tb t where type = tb.type for xml path('')) , 1 , 1 , '')
from tb
group by type
create table tb(Type varchar(10), Name varchar(10))
insert into tb values('A' , 'A_1')
insert into tb values('B' , 'B_1')
insert into tb values('A' , 'A_2')
insert into tb values('A' , 'A_3')
insert into tb values('A' , 'A_4')
insert into tb values('B' , 'B_2')
insert into tb values('B' , 'B_3')
go
select type, [Name] = stuff((select ';' + [Name] from tb t where type = tb.type for xml path('')) , 1 , 1 , '')
from tb
group by type
drop table tb
/*
type Name
---------- ----------------
A A_1;A_2;A_3;A_4
B B_1;B_2;B_3
(2 行受影响)
*/
drop table tb
go
create table tb(Type varchar(10), Name varchar(10))
insert into tb values('A' , 'A_1')
insert into tb values('B' , 'B_1')
insert into tb values('A' , 'A_2')
insert into tb values('A' , 'A_3')
insert into tb values('A' , 'A_4')
insert into tb values('B' , 'B_2')
insert into tb values('B' , 'B_3')
go
select type, [Name] = stuff((select ';' + [Name] from tb where type = t.type for xml path('')) , 1 , 1 , '')
from tb t
group by type
type Name
---------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
A A_1;A_2;A_3;A_4
B B_1;B_2;B_3
(2 行受影响)
select type, [Name] = stuff((select ';' + [Name] from tb t where type = t.type for xml path('')) , 1 , 1 , '')
from tb t
group by type
SELECT [Type],[Name]=Stuff((SELECT ',' + [Name] FROM [Temp] AS T WHERE x.[Type] = T.[Type] FOR XML PATH('')) , 1 , 1 , '')
FROM [Temp] x
WITH [Temp]([Type],[Name]) AS
(
SELECT 'A' AS [Type] , 'A_1' AS [Name] UNION ALL
SELECT 'B' , 'B_1' UNION ALL
SELECT 'A' , 'A_2' UNION ALL
SELECT 'A' , 'A_3' UNION ALL
SELECT 'A' , 'A_4' UNION ALL
SELECT 'B' , 'B_2' UNION ALL
SELECT 'B' , 'B_3'
)
SELECT [Type],[Name]=Stuff((SELECT ',' + [Name] FROM [Temp] AS T WHERE [Temp].[Type] = T.[Type] FOR XML PATH('')) , 1 , 1 , '')
FROM [Temp]
GROUP BY [Type]
Type Name
---- -----------
A A_1,A_2,A_3,A_4
B B_1,B_2,B_3
WITH [Temp]([Type],[Name]) AS
(
SELECT 'A' AS [Type] , 'A_1' AS [Name] UNION ALL
SELECT 'B' , 'B_1' UNION ALL
SELECT 'A' , 'A_2' UNION ALL
SELECT 'A' , 'A_3' UNION ALL
SELECT 'A' , 'A_4' UNION ALL
SELECT 'B' , 'B_2' UNION ALL
SELECT 'B' , 'B_3'
)
SELECT [Type],[Name]=Stuff((SELECT ',' + [Name] FROM [Temp] AS T WHERE [Type] = T.[Type] FOR XML PATH('')) , 1 , 1 , '')
FROM [Temp]
GROUP BY [Type]
结果:
---------------------------------
Type Name
A A_1,B_1,A_2,A_3,A_4,B_2,B_3
B A_1,B_1,A_2,A_3,A_4,B_2,B_3