2010-08-10 48 views
1

我有兩個表,我想加入到一個表中,並使用TypeID來區分它們。比方說,類型爲A和B的表是A_Level和B_LevelSQL合併兩個表並更新引用ID

A的表看起來像

級別
Level_ID說明

B的表看起來像

級別
Level_ID LEVEL_DESC

A的Level_ID從表C引用爲Level_ID
B的Level_ID從表D引用爲Level_ID

我正在查找將兩個表合併成一個表(Level_Code)並相應地更新引用的表ID的腳本。

任何幫助,非常感謝。

+1

您使用的數據庫是?你確定TableA和TableB中沒有重複的ID號嗎? – JNK 2010-08-10 14:48:47

+0

TableA和TableB中存在重複的ID號,這就是爲什麼我需要使用新ID更新參考表 – Gage 2010-08-10 14:50:54

+0

好的,您使用的是哪個DB? – JNK 2010-08-10 14:53:26

回答

1
select a.Level_Id ALevelId, b.Level_Id BLevelId, 
     case ISNULL(a.Level_Id, 0) when 0 then 'B' else 'A' end AS Type, 
     case ISNULL(a.Level_Id, 0) when 0 then b.Level_Id else a.Level_Id end AS NewLevel_Id 
INTO Dummy  
FROM a 
FULL JOIN b On (a.Level_ID = b.Level_ID); 


UPDATE c 
SET c.Level_id = Dummy.NewLevel_Id 
from Dummy, c 
WHERE c.Level_Id = Dummy.ALevelId 
AND Dummy.Type = 'A'; 

UPDATE d 
SET d.Level_id = Dummy.NewLevel_Id 
from Dummy, d 
WHERE d.Level_Id = Dummy.BLevelId 
AND Dummy.Type = 'B'; 

SELECT Dummy.NewLevel_Id, a.Level, a.LevelDesc As Description 
INTO YourNewTable 
from Dummy JOIN a ON (Dummy.ALevelId = a.Level_Id) 
Where Dummy.Type = 'A' 
UNION 
SELECT NewLevel_Id, Level, LevelDesc As Description 
from Dummy JOIN b ON (Dummy.BLevelId = b.Level_Id) 
Where Dummy.Type = 'B' 

DROP TAble Dummy; 
+0

Im在關鍵字'AS'附近獲得錯誤的語法。從查詢的第二行以及reate Table YourNewTable – Gage 2010-08-10 15:40:42

+0

@Gage之後,我已經更新了腳本 – 2010-08-10 16:22:15