有表如下:
如何獲得如下結果:
解法
使用xml轉換
代碼如下:
復制代碼 代碼如下:
CREATE TABLE body
(
ID int,
BODY nvarchar(20)
)
go
INSERT INTO body VALUES(1,'aaaa')
INSERT INTO body VALUES(2,'bbbb')
INSERT INTO body VALUES(1,'cccccc')
INSERT INTO body VALUES(3,'ddddd')
go
SELECT * FROM body
SELECT distinct a.ID,stuff((SELECT ','+BODY FROM body WHERE ID=a.ID FOR xml path('')),1,1,'') ASBODY
FROM
body a
--具體思路是這樣的:
SELECT ','+BODY FROM body WHERE ID=a.ID FOR xml path('')
--這條語句的作用是按照a中的ID查找body表中ID=a.ID的所有記錄,並把它轉換成一個xml(關於將查詢集轉換成xml的文章,你可以去看看)
stuff((SELECT ','+BODY FROM body WHERE ID=a.ID FOR xml path('')),1,1,'')
--這條語句的作用是把生成的xml前面的一個逗號去掉並轉化成標量值
--最後用一個distinct去掉重復的記錄