SQL 服务器 - 带引号的 LIST AGG

SQL Server - LIST AGG with quotes

我正在尝试使用找到的答案 here 来连接一个分组的字符串集合,除非我希望输出的每个项目都有引号。

Field A | Field B
1       |  A
1       |  B
2       |  A

1 | "A","B"
2 | "A"

SELECT FieldA , STUFF(( SELECT  ','+ FieldB FROM TableName a
WHERE b.FieldA = a.FieldA FOR XML PATH('')),1 ,1, '')  Members
FROM TableName b
GROUP BY FieldA;

我试过在逗号前后添加引号,但格式不正确。

有什么建议吗?

只需将 '''' /'"' 添加到 XML + STUFF 方法:

select distinct t1.FieldA,
  STUFF((SELECT distinct ',' + ''''+ t2.FieldB + ''''
         from yourtable t2
         where t1.FieldA = t2.FieldA
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'') data
from yourtable t1;

Rextester Demo

编辑:

或使用QUOTENAME:

select distinct t1.FieldA,
  STUFF((SELECT distinct ',' + QUOTENAME(t2.FieldB, '"')
         from yourtable t2
         where t1.FieldA = t2.FieldA
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'') data
from yourtable t1;

Rextester Demo2

我更喜欢第一个建议,但这里有一个变体:

SELECT FIELDA, ISNULL([1],'') + ' ' + ISNULL([2], '')
FROM
    (SELECT   FIELDA, ISNULL(QUOTENAME(FieldB, '"'),'') AS FIELDB
    ,ROW_NUMBER() OVER (PARTITION BY fielda ORDER BY fielda) AS tbl
    FROM yourtable)a
PIVOT (MAX(fieldb) FOR tbl IN ([1],[2])) AS pvt