您的位置:首页 > 数据库

sql server 中某个字段值合并【转】

2013-03-29 09:47 204 查看
一、问题

有表如下:



如何获得如下结果:



二、解法一

使用xml转换

代码如下:

viewsourceprint?

01
CREATE
TABLE
body
02
(
03
ID
int
,
04
BODYnvarchar(20)
05
)
06
go
07
INSERT
INTO
body
VALUES
(1,
'aaaa'
)
08
INSERT
INTO
body
VALUES
(2,
'bbbb'
)
09
INSERT
INTO
body
VALUES
(1,
'cccccc'
)
10
INSERT
INTO
body
VALUES
(3,
'ddddd'
)
11
go
12
SELECT
*
FROM
body
13
14
SELECT
distinct
a.ID,stuff((
SELECT
','
+BODY
FROM
body
WHERE
ID=a.ID
FOR
xmlpath(
''
)),1,1,
''
)
AS
BODY
15
FROM
16
bodya
17
18
19
--具体思路是这样的:
20
SELECT
','
+BODY
FROM
body
WHERE
ID=a.ID
FOR
xmlpath(
''
)
21
--这条语句的作用是按照a中的ID查找body表中ID=a.ID的所有记录,并把它转换成一个xml(关于将查询集转换成xml的文章,
22
--博客园有很多的,你可以去看看)
23
stuff((
SELECT
','
+BODY
FROM
body
WHERE
ID=a.ID
FOR
xmlpath(
''
)),1,1,
''
)
24
--这条语句的作用是把生成的xml前面的一个逗号去掉并转化成标量值
25
--最后用一个distinct去掉重复的记录
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: