Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Server中的字符串连接,具有按差异列排序的不同值_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql Server中的字符串连接,具有按差异列排序的不同值

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

我有下面的场景,为了简单起见,我为此创建了小提琴 我有案例id(CaseId),我可以有多个主题id(casessubcid)&这些案例主题可以随时添加,因此它们的插入顺序由rowid维护。“Office”列显示该特定案例主题的办公室位置。 我必须以csv方式查询每个案例id的所有位置,以便为office选择不同的值,并以rowid asc顺序维护连接顺序

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