Sql Server中的字符串连接,具有按差异列排序的不同值
我有下面的场景,为了简单起见,我为此创建了小提琴 我有案例id(CaseId),我可以有多个主题id(casessubcid)&这些案例主题可以随时添加,因此它们的插入顺序由rowid维护。“Office”列显示该特定案例主题的办公室位置。 我必须以csv方式查询每个案例id的所有位置,以便为office选择不同的值,并以rowid asc顺序维护连接顺序Sql Server中的字符串连接,具有按差异列排序的不同值,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有下面的场景,为了简单起见,我为此创建了小提琴 我有案例id(CaseId),我可以有多个主题id(casessubcid)&这些案例主题可以随时添加,因此它们的插入顺序由rowid维护。“Office”列显示该特定案例主题的办公室位置。 我必须以csv方式查询每个案例id的所有位置,以便为office选择不同的值,并以rowid asc顺序维护连接顺序 CREATE TABLE TmpTest(CaseId INT,CaseSubjId INT,Office VARCHAR(10),RowI
CREATE TABLE TmpTest(CaseId INT,CaseSubjId INT,Office VARCHAR(10),RowId INT)
INSERT INTO TmpTest(CaseId,CaseSubjId,Office,RowId)VALUES
(1,1,'Kol',1),(1,2,'Del',2),(1,3,'Kol',4),(1,4,'Noi',3),(1,5,'Kol',6),
(1,6,'Bhu',7),(2,11,'Kol',5),(2,12,'Bhu',3),(2,13,'Kol',4),(2,14,'Met',7),
(2,15,'Bhu',1),(2,16,'Met',2)
--OutPut Required:
CaseId | Office
1 | Kol,Del,Noi,Bhu
2 | Bhu,Met,Kol
--Order By Row Id Asc Group By Case Id Concat String In CSV For Office Value
但是我在office中得到的所有值都被连接起来了。试试这个:
select distinct caseid,
STUFF(
(SELECT DISTINCT ',' + tmp.Office
FROM TmpTest AS tmp
WHERE tmp.CaseId = TmpTest.CaseId
FOR XML PATH('')), 1, 1, '')
AS Locations
from TmpTest group by caseid
试试这个:
select distinct caseid,
STUFF(
(SELECT DISTINCT ',' + tmp.Office
FROM TmpTest AS tmp
WHERE tmp.CaseId = TmpTest.CaseId
FOR XML PATH('')), 1, 1, '')
AS Locations
from TmpTest group by caseid