2014-05-12 119 views
1

需要下面的场景的一些建议。我有两个连接的表(说表A和表B)SQL插入记录对于结果集的每个记录

表A具有ContrastId而表B具有HueID,他们被ColorId

接合
Select ColorCD, ContrastId, HueId, 
From TableA TA 
Inner JOIN TableB TB 
TA.ColorID = TB.ColorID 

上述选择语句的结果应该是柱插入到另一个表(表说C)的结果

例子:

ColorCD | ContrastID | HueID 
----------------------------- 
111000 | 123  | 555 
111100 | 114  | 548 
110015 | 128  | 265 

我想要什么在表C,凡在我需要把结果发生设置如下所示。

表C上的布局

INSERT INTO dbo.TableC (Gen_N, ColorCD, ColorType ,Identifier, ProcessDT) 
      SELECT Gen_N, ColorCD, 'Contrast' ,Identifier, ProcessDT 
      From TableA TA 
      Inner JOIN TableB TB 
      TA.ColorID = TB.ColorID 


Gen_N | ColorCD | ColorType | Identifier 
------------------------------------------  
Color | 111000 | Contrast | 123 
Color | 111000 | Hue  | 555 
Color | 111100 | Contrast | 148 
Color | 111100 | Hue  | 548 
Color | 110015 | Contrast | 128 
Color | 110015 | Hue  | 256 

道歉,我不知道怎么在这里插入一个表格。 :) 非常感谢您的帮助。我相信我需要在这里做一个循环来获取结果集的每个记录,但不知道如何去做。

请帮忙吗?非常感谢

+0

哪些列'ProcessDT'价值观 –

回答

1

你不应该需要一个循环。假设你的字段是正确的,你可以为Insert做一个Union的每种类型。

这应该隐含结构工作:

Insert TableC (Gen_N, ColorCD, ColorType, Identifier, ProcessDT) 
    Select Gen_N, ColorCD, 'Contrast', ContrastId, ProcessDT 
    From TableA TA 
    Join TableB TB On TA.ColorID = TB.ColorID 
Union All 
    Select Gen_N, ColorCD, 'Hue', HueID, ProcessDT 
    From TableA TA 
    Join TableB TB On TA.ColorID = TB.ColorID