Sql server SQL SERVER中具有连接等效项的组\u Concat
我的代码有问题。我以前使用MySQL,但我已经将代码迁移到SQL Server 现在我在使用这个GROUP_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
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
。见问题。