获取升序级联排
问题描述:
可能重复:
SQL Server: Can I Comma Delimit Multiple Rows Into One Column?获取升序级联排
脚本: -
CREATE TABLE Category (
ID int,
ErrorMessage nvarchar(200)
)
INSERT INTO Category
(ID, ErrorMessage)
VALUES
(1, 'efgh')
INSERT INTO Category
(ID, ErrorMessage)
VALUES
(1, 'abcd')
INSERT INTO Category
(ID, ErrorMessage)
VALUES
(1, 'ijkl')
INSERT INTO Category
(ID, ErrorMessage)
VALUES
(2, 'efgh')
INSERT INTO Category
(ID, ErrorMessage)
VALUES
(2, 'abcd')
INSERT INTO Category
(ID, ErrorMessage)
VALUES
(2, 'ijkl')
预计输出
Id ErrorMessage
----------------------------------
1 abcd,efgh,ijkl
2 abcd,efgh,ijkl
请注意,类别ID是分组的,用逗号分隔的消息按升序排列。
答
Select C.Id
, Stuff(
(
Select ', ' + C1.ErrorMessage
From Category As C1
Where C1.Id = C.Id
Order By C1.ErrorMessage
For Xml Path('')
), 1, 2, '') As Categories
From Category As C
Group By C.Id
+0
您可以在不使用XML类型和值提取的情况下获得XML授权 – RichardTheKiwi 2011-04-19 05:09:35
答
select A.ID, STUFF((
select ','+B.ErrorMessage
from Category B
where B.ID = A.ID
order by B.ErrorMessage
for xml path ('a'), type).value('.','nvarchar(max)'),1,1,'')
from Category A
group by A.ID
order by A.ID
什么版本的SQL Server? – 2011-04-19 05:06:20
Sql server 2005 – 2011-04-19 05:06:44