我有一张下表
| PK | 姓名 | 氟肯 |
|---|---|---|
| 01 | ABC | 01FK |
| 02 | BCA | 01FK |
| 03 | 出租车 | 02FK |
| 04 | XYZ | 03FK |
| 05 | yzx | 02FK |
我想生成一个新表,其中 FK 为主表,其余列基于 FK 合并。所以最终结果看起来像这样:
| 氟肯 | 姓名 |
|---|---|
| 01FK | 美国广播公司、英国广播公司 |
| 02FK | 驾驶室,yzx |
| 03FK | XYZ |
您可以使用 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)
下次,请添加脚本来创建表和测试数据。另请参阅埃里克建议的评论链接。
| 归档时间: |
|
| 查看次数: |
169 次 |
| 最近记录: |