我试图将查询的多行连接成一个字符串,但没有得到我期望的结果。我正在使用的示例应该返回一行,其中第 1 行和第 2 行的值连接在第 1 行中,并用逗号分隔。相反,我得到了两行,其中第 1 行与其自身连接,第 2 行除了前面有一个逗号外保持不变。
预期结果:
A型、B型
实际结果:
,类型A,类型A ,B型
(SELECT ',' + a.order_code
FROM table_A a
WHERE a.account_number = b.account_number
FOR XML PATH ('')) AS Code3
我在这里做错了什么?谢谢!
注意:我正在 SQL Server 2014 中工作,因此 STRING_AGG 不适合我。
你没有做错任何事。你只需要把前面的逗号去掉就可以了。您可以使用
STUFF
函数来执行此操作。
STUFF
的第三个参数应该是分隔符的长度。
您还应该使用
.value
来转义任何可能的 XML 字符。
STUFF(
(
SELECT ',' + a.order_code
FROM table_A a
WHERE a.account_number = b.account_number
FOR XML PATH (''), TYPE
).value('text()[1]', 'nvarchar(max)'),
1, 1, '') AS Code3