Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.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 SERVER中具有连接等效项的组\u Concat_Sql Server_String Aggregation - Fatal编程技术网

Sql server SQL SERVER中具有连接等效项的组\u Concat

Sql server SQL SERVER中具有连接等效项的组\u Concat,sql-server,string-aggregation,Sql Server,String Aggregation,我的代码有问题。我以前使用MySQL,但我已经将代码迁移到SQL Server 现在我在使用这个GROUP_CONCAT函数时遇到了问题。我发现了一些“潜在的”等价物,但它并没有产生预期的结果 以下是查询: SELECT GROUP_CONCAT(c.namecheck SEPARATOR '; ') AS GROUPNAME FROM db_name a left JOIN db_employee b ON a.nameId = b.empID left join db_civ c ON

我的代码有问题。我以前使用MySQL,但我已经将代码迁移到SQL Server

现在我在使用这个GROUP_CONCAT函数时遇到了问题。我发现了一些“潜在的”等价物,但它并没有产生预期的结果

以下是查询:

SELECT 
  GROUP_CONCAT(c.namecheck SEPARATOR '; ') AS GROUPNAME
FROM db_name a
left JOIN db_employee b ON a.nameId = b.empID
left join db_civ c ON b.nameNum = c.civNum
我试了一些。但正如我所说,它不会输出我所期望的结果(因为我在MySQL中反检查了查询)

预期产出应为

-----------
|GROUPNAME|
-----------
|Jay; Ron; Jorge .... etc|
|                        |
|                        |
|                        |

在SQL Server中,使用FOR XML PATH将行值连接到字符串中

CREATE TABLE states (id int, statename nvarchar(20))
INSERT states SELECT 1, 'Texas'
INSERT states SELECT 2, 'Florida'
INSERT states SELECT 3, 'California'

CREATE TABLE capitals (id int, cityname nvarchar(20))
INSERT capitals SELECT 1, 'Austin'
INSERT capitals SELECT 2, 'Tallahassee'
INSERT capitals SELECT 2, 'Sacramento'

--The wrapper removes the leading delimiter
SELECT STUFF((
    SELECT  DISTINCT '; ' + c.cityname  --Specify delimiter
    FROM    states s
    JOIN    capitals c ON c.id = s.id
    FOR XML PATH ('')                   --This does the concatenation
), 1, 1, '' )
输出为:

Austin; Sacramento; Tallahassee
举个例子,它是:

--The wrapper removes the leading delimiter
SELECT STUFF((
    SELECT  DISTINCT '; ' + c.namecheck  --Specify delimiter
    FROM db_name a
    left JOIN db_employee b ON a.nameId = b.empID
    left join db_civ c ON b.nameNum = c.civNum
    FOR XML PATH ('')                   --This does the concatenation
), 1, 1, '' ) AS GROUPNAME

你期望的输出结果是什么?我会把它放在帖子里。我不会编辑它。Aaron Bertrand对您可以使用的不同选项做了一个简单的解释,MYSQL中该代码的等价物是什么?是从states选择group_concat(cityname)吗?我对MYSQL不太熟悉,但最后一节用您自己的代码展示了FOR XML路径语法。它是否给出了您期望的答案?@WhiteMark如果您的数据包含例如
&
,请小心使用
FOR XML
。见问题。