根据 ID 连接前缀 -TSQL

Concatenate Prefix based on ID -TSQL

我想要的是设法连接所有具有相同 ID 的前缀。

这是我使用的代码:

  CTE_1 (ID,Prefix)AS (SELECT *, STUFF((
            SELECT DISTINCT ', ' + Prefix
            FROM CTE
            WHERE ID = t.ID
            FOR XML PATH('')), 1, 2, '')
FROM (
    SELECT DISTINCT ID
    FROM CTE
) t)

代码工作正常,但是当前缀为空时,它会导入一个 ,,我想避免它。

有什么想法吗?

SQL 版本:Microsoft SQL Server 2014

您可以按如下方式修正您的查询:

CTE_1 (ID,Prefix)AS (SELECT *, STUFF((
        SELECT DISTINCT 
             CASE 
                 WHEN Prefix IS NOT NULL AND Prefix <> ''
                 THEN ', ' + Prefix
                 ELSE ''
             END
        FROM CTE
        WHERE ID = t.ID
        FOR XML PATH('')), 1, 2, '')
FROM (
    SELECT DISTINCT ID
    FROM CTE
) t)