如何在 SQL 中获取单行值作为逗号附加文本
How to get single row values as comma appended text in SQL
在 SQL 我的查询结果像
我需要在我的产品名称后附加“,”的结果中避免联系人姓名重复。
请帮忙。
SQL-Server 2017 (Not introduced for earlier versions)
使用字符串聚合函数STRING_AGG()
。
SELECT first_name+''+last_Name, STRING_AGG(product_name, ', ') AS products
FROM your_table
GROUP BY first_name,last_Name;
根据您需要的输出在 GROUP BY
中添加列。
希望对您有所帮助。
我的上述回答不适用于 SQL-Server 2017
之前的版本。
所以我已经实施了一些其他解决方案,如下所示。
示例 table:your_table
并应用此代码:
select distinct tb2.first_name,
substring(
(
select ','+tb1.product_name as [text()]
from dbo.your_table as tb1
where tb1.first_name = tb2.first_name
order by tb1.first_name
for xml path ('')
), 2, 500) [products]
from dbo.your_table tb2;
结果如期而至:
在 SQL 我的查询结果像
我需要在我的产品名称后附加“,”的结果中避免联系人姓名重复。
请帮忙。
SQL-Server 2017 (Not introduced for earlier versions)
使用字符串聚合函数STRING_AGG()
。
SELECT first_name+''+last_Name, STRING_AGG(product_name, ', ') AS products
FROM your_table
GROUP BY first_name,last_Name;
根据您需要的输出在 GROUP BY
中添加列。
希望对您有所帮助。
我的上述回答不适用于 SQL-Server 2017
之前的版本。
所以我已经实施了一些其他解决方案,如下所示。
示例 table:your_table
并应用此代码:
select distinct tb2.first_name,
substring(
(
select ','+tb1.product_name as [text()]
from dbo.your_table as tb1
where tb1.first_name = tb2.first_name
order by tb1.first_name
for xml path ('')
), 2, 500) [products]
from dbo.your_table tb2;
结果如期而至: