SQL Server - 将包含其他列值的列更新为CSV

Ash*_*pta 2 sql t-sql sql-server sql-server-2005

表和示例数据的脚本

CREATE TABLE #TEMPTABLE1(ID INT, COL1 NVARCHAR(10))
CREATE TABLE #TEMPTABLE2(ID INT, COL2 NVARCHAR(10))

INSERT INTO #TEMPTABLE1 (ID) VALUES(1)
INSERT INTO #TEMPTABLE1 (ID) VALUES(2)
INSERT INTO #TEMPTABLE1 (ID) VALUES(3)

INSERT INTO #TEMPTABLE2 (ID,COL2) VALUES(1,'A')
INSERT INTO #TEMPTABLE2 (ID,COL2) VALUES(1,'B')
INSERT INTO #TEMPTABLE2 (ID,COL2) VALUES(1,'C')
INSERT INTO #TEMPTABLE2 (ID,COL2) VALUES(2,'X')
INSERT INTO #TEMPTABLE2 (ID,COL2) VALUES(2,'Y')
INSERT INTO #TEMPTABLE2 (ID,COL2) VALUES(3,'Z')
Run Code Online (Sandbox Code Playgroud)

我需要更新#TEMPTABLE1这样的

ID COL1
---------
1  A,B,C 
2  X,Y
3  Z
Run Code Online (Sandbox Code Playgroud)

etl*_*ens 7

听起来像OP需要更新声明.

UPDATE [x]
SET
    [COL1] = STUFF
            (
                (
                    SELECT
                        N',' + [COL2]
                    FROM
                        [#TEMPTABLE2] AS [y]
                    WHERE
                        [y].[ID] = [x].[ID]
                    FOR XML PATH(''), TYPE
                ).value(N'.', N'nvarchar(10)'), 
                1, 1, N''
            )
OUTPUT INSERTED.*
FROM
    [#TEMPTABLE1] AS [x]
Run Code Online (Sandbox Code Playgroud)