2016-07-13 109 views
0

我有以下的職員表的數據:SSIS - 從表變換2只記錄1個記錄表B中

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

City_Type可以是Y或Z的Y是此人出生在城市,Z是他/她現在居住的城市。 我需要在表「B」看起來像把這些結合在一起如下因素:

ID | emp | Current_City | Birth_City 
到底

因此,表B必須填寫這樣的:

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

(在某些情況下, ,其中之一可以爲空/空)

有關如何做到這一點的任何建議?我自己無法找到關於此的很多信息。

回答

1

我做這個測試(使用SQL服務器)與PIVOT TABLE

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 

予省略ID NULL值的一個例子,從請求中不清楚是否需要添加以及需要添加什麼(最小值,最大值或者計算的或者由於表_B中的INSERT)

This previous qu ERY可以用來插入TABLE__B

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

一種方法是使用PIVOT轉換。

+0

感謝您的建議,但你能解釋一下?我已經找到了它,但是在這種情況下無法真正瞭解它會如何幫助我。 – DenStudent

+0

嗯,看起來轉換隻能使用數值,所以它不會對你的情況有所幫助。相反,你應該使用SQL你的源查詢來做PIVOT。 –

1

首先創建表B和填充[Current_City]和[Birth_City]與空值,但要確保[EMP]是存在的,它擁有所有你想要修改的員工。

然後運行該SQL修改,以適應你的數據庫/模式/表名稱的/ etc:

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) 
相關問題