如果 FK 相同,则合并行值

Muh*_*ani 0 pivot

我有一张下表

PK 姓名 氟肯
01 ABC 01FK
02 BCA 01FK
03 出租车 02FK
04 XYZ 03FK
05 yzx 02FK

我想生成一个新表,其中 FK 为主表,其余列基于 FK 合并。所以最终结果看起来像这样:

氟肯 姓名
01FK 美国广播公司、英国广播公司
02FK 驾驶室,yzx
03FK XYZ

Pet*_*ter 6

您可以使用 STRING_AGG 来解决此问题(SQL Server 2017):

SELECT FK, STRING_AGG(name, ', ') AS NAME FROM dbo.NotProvidedTableName
GROUP BY FK
Run Code Online (Sandbox Code Playgroud)

如果您使用的是旧版本,则可以使用 FOR XML 子句。

WITH CTE_TableName
AS (SELECT FK,
           Name
    FROM dbo.NotProvidedTableName)
SELECT t0.FK,
       STUFF(
       (
           SELECT ',' + t1.Name
           FROM CTE_TableName t1
           WHERE t1.FK = t0.FK
           ORDER BY t1.Name
           FOR XML PATH('')
       ),
       1,
       LEN(','),
       ''
            ) AS NAME
FROM CTE_TableName t0
GROUP BY t0.FK
ORDER BY FK;
Run Code Online (Sandbox Code Playgroud)

下次,请添加脚本来创建表和测试数据。另请参阅埃里克建议的评论链接。