Sql 以升序获取连接的行
可能重复:Sql 以升序获取连接的行,sql,sql-server-2005,tsql,Sql,Sql Server 2005,Tsql,可能重复: 脚本:- 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
脚本:-
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已分组,以逗号分隔的消息按升序排列。您可以在不使用XML类型和值提取的情况下获得XML实体化您可以在不使用XML类型和值提取的情况下获得XML实体化
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
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