2016-07-13 11 views
0

私は、従業員表Aのデータを次ていますSSIS - テーブルBに1つのレコードにテーブルAから2つのレコードを変換

ID | emp | City_Type | City 
1 | 101 | Z   | Tokyo 
2 | 101 | Y   | New York 

City_Typeは、この人がで生まれた街であることYまたはZ Yのいずれかであることができます、Zは彼/彼女が今住んでいる都市です。 私はfolowingのように見えた「B」の表にまとめてこれらを配置する必要がありますいくつかのケースで

ID | emp | Current_City | Birth_City 
1 | 101 | Tokyo   | New York 

(:だから最後に、表Bは次のように埋めなければならない

ID | emp | Current_City | Birth_City 

、2のうちの1つは空/ヌルにすることができます)

どのようにこれを行うための任意の提案?私はこれに関する多くの情報を自分で見つけ出すことができませんでした。

答えて

1

Iは、PIVOT TABLEと(SQLサーバを使用して)この練習をした:

select emp, Z 'Current_City' , Y 'Birth_City' from 
(
    select emp,City_Type, City from TABLE__A 

) x 
pivot 
(
max(City) FOR City_Type in (Z,Y) 
) AS PivotTable 

達成された結果の下、フィールドCurrent_City

emp Current_City Birth_City 
101 Tokyo   New York 
102 NULL   London 

のNULL値の例を私はIDを省略(最小値、最大値、またはTABLE_BのINSERTによって計算された新しい値)

この前のqu ERYは、まずNULLで[Birth_City]あなたTableBのを作成し、移入[Current_City]とTABLE__B

INSERT INTO [TABLE__B] 
      ([emp] 
      ,[Current_City] 
      ,[Birth_City]) 
... 
0

PIVOT変換を使用する方法もあります。

+0

感謝していますが手の込んだだろうか?私はそれを探しましたが、このケースでどのように役立つのか分かりませんでした。 – DenStudent

+0

ええと、それは変換が数値でしか機能しないようですので、あなたのケースでは役に立たないでしょう。代わりに、PIVOTをソースクエリのSQLを使用して実行する必要があります。 –

1

に挿入するが、必ず[EMP]があることを確認するために使用することができ、それはあなたが変更しようとするすべての従業員を擁しています。その後

データベース/スキーマ/テーブル名は/ etcに合わせて変更このSQLを実行します。提案のための

update TableB 
set Current_City = (select City 
        from TableA 
        where TableA.City_Type ='Z' 
        and TableA.emp = TableB.emp), 
Birth_City = (select City 
       from TableA 
       where TableA.City_Type ='Y' 
       and TableA.emp = TableB.emp) 
関連する問題