SQL Server:将多个记录合并到一个字段中

时间:2019-03-01 14:23:00

标签: sql-server-2014

我创建了以下SQL脚本:

SELECT 
    E.ID,  
    abc = STUFF((SELECT ' ' + E2.ExclusionID
                 FROM Exclusion E2
                 WHERE E.ID = E2.ID 
                 FOR XML PATH ('')), 1, 0, '') 
FROM
    Exclusion E 
GROUP BY 
    E.ContractMovementID

它将ID的所有排除记录合并为一个记录,并显示如下:

ID     ExclusionID
-------------------
1      123
2      2345
3      4567

但是,我希望它显示为:

ID     ExclusionID
-------------------    
1      1 2 3
2      23 45
3      45 67

因此,各列之间用空格分隔,但是,我似乎无法在它们之间放置空格。谁能帮我这个? (我希望这是有道理的)

谢谢

杰西卡

2 个答案:

答案 0 :(得分:0)

如何?

SELECT 
    E.ID,  
    abc = STUFF((SELECT '  ' + E2.ExclusionID
                 FROM Exclusion E2
                 WHERE E.ID = E2.ID 
                 FOR XML PATH ('')), 1, 1, '') 
FROM
    Exclusion E 
GROUP BY 
    E.ContractMovementID

答案 1 :(得分:0)

我找到了一个解决方案,因为exclusion.id是INT数据类型,我必须将其转换为varchar才能添加分隔符。

SELECT 
    E.ID,  
    abc = STUFF((SELECT CAST(E2.ExclusionID AS VARCHAR) + ','
                 FROM Exclusion E2
                 WHERE E.ID = E2.ID 
                 FOR XML PATH ('')), 1, 0, '')  FROM
    Exclusion E  GROUP BY 
    E.ContractMovementID