2

以下に説明するように、2つのテーブルがあります。

Table1

id | table2_id | value
1  | 1         | AAA
2  | 1         | BBB
3  | 1         | CCC

Table2

id | value
1  | XXXX

Table2からの結合値で更新したいTable1

OUTPUT が期待されるTable2

id | value
1  | AAA,BBB,CCC

どうすればよいですか、またはSQLサーバーでTSQLを使用するだけで上記で説明した期待される結果を得る最良の方法はありますか?

4

2 に答える 2

3

あなたはCommon Table Expressionこれで使うことができます、

WITH record
AS
(
    SELECT [table2_id],
            STUFF((SELECT ',' + [value]
                    FROM Table1
                    WHERE [table2_id] = a.[table2_id]
                    FOR XML PATH ('')), 1, 1, '')  AS val_list
    FROM    Table1 AS a
    GROUP   BY [table2_id]
)
UPDATE  a
SET     a.value = b.val_list
FROM    table2 a
        INNER JOIN record b
            ON a.ID = b.table2_id
于 2013-05-02T08:14:52.087 に答える
0

JW 웃</a> の回答を調べた後、以下のクエリとして最も簡単な方法を変更して実行しました。

UPDATE table2
SET table2.value = STUFF((SELECT ',' + [value]
                        FROM Table1
                        WHERE [table2_id] = a.[table2_id]
                        FOR XML PATH ('')), 1, 1, '')
FROM Table1 a 
WHERE table2.ID = a.table2_id

SQLFiddle デモはこちら

于 2013-05-02T10:42:32.367 に答える