今日看到一篇文章,是關於和並列的,也研究了下,還是不錯的
要這種效果。
create table tb(idint, value varchar(10))
insert into tbvalues(1,'aa')
insert into tbvalues(1,'bb')
insert into tbvalues(2,'aaa')
insert into tbvalues(2,'bbb')
insert into tbvalues(2,'ccc')
go
/* stuff(param1, startIndex, length, param2)
說明:將param1中自startIndex(SQL中都是從1開始,而非0)起,刪除length個字符,然后用param2替換刪掉的字符。*/
SELECT id,
value = stuff
((SELECT ',' + value
FROM tb AS t
WHERE t .id = tb.id FOR xml path('')), 1, 1, '')
FROM tb
GROUP BY id
這樣即可。
例如 兩個表 汽車分組表tb_group,和汽車表tb_car
select id, groupname, contace, mobile, begintime, endtime, parkingcount, groupType
,value = stuff((SELECT ',' + plate FROM tb_car AS t WHERE t .groupid = [tb_group].id FOR xml path('')), 1, 1, '')
from [dbo].[tb_group]
結果為