1

私は2つのテーブルを持っています:

表 1 (名前、(...)、製品 ID)

表 2 (顧客名、製品 ID)

サンプル表 1

Test1 | 1

サンプル表 2:

Customer1 | 1

Customer2 | 1

テーブル スキーマは固定されており、変更することも、追加のビューを作成することもできません。SQL Server Integration Services では、新しいテーブルを作成する必要があります。この新しいテーブル内に、 のような顧客を含む 1 つの列が必要Customer1; Customer2ですTest1

COALESCE でできることはわかっていますが、SSIS 内でそれを行う方法がわかりません。どの変換をどのように使用すればよいですか?

更新 COALESCE のサンプルは次のとおりです。

DECLARE @names VARCHAR(150) 

SELECT @names = COALESCE(@names + '; ', '') + [CustomerName]
  FROM Table2

SELECT @names

このスニペットを 1 つの新しい に挿入する方法はSELECT * FROM Table1?

4

3 に答える 3

3

OLEDB ソースを取得し、そのソースに対して SQL クエリを使用します。

SELECT T1.Name, T2.Customer  
FROM [TABLE 1] AS T1
    INNER JOIN [Table 2] as T2
        ON T1.ProductID = T2.ProductID

次に、データ フローを使用して、それを OLEDB の宛先に移動します。データベース エンジンで簡単に処理できるのであれば、SSIS に凝る必要はありません。

于 2013-04-30T15:13:03.630 に答える
1

最良かつ最もパフォーマンスの高いソリューションは、生のテーブルではなく、SQL クエリをソースとして使用することです。次に、SQL クエリで COALESCE (または連結) を実行すると、SSIS データ パイプを介して渡されます。

于 2013-04-30T15:01:24.777 に答える
1

わかりました、私は解決策を見つけました:

SELECT [All_My_Other_Fields], STUFF(
             (SELECT '; ' + [CustomerName] 
              FROM Table2
              WHERE Table2.ProductID=Table1.ProductID
              FOR XML PATH (''))
             , 1, 1, '') AS Customers
FROM Table1

ご協力ありがとうございました!

于 2013-05-03T12:13:10.690 に答える