SQL插入记录对于结果集的每个记录

时间:2014-05-12 12:25:48

标签: sql sql-server tsql insert while-loop

需要对以下方案提出一些建议。我有两个连接表(比如表A和表B)

表A的列为ContrastId,而表B为HueID,它们由ColorId连接

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

上面的select语句的结果应该插入另一个表(比如表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

对布局表示抱歉,我不知道如何在此处插入表格。 :) 非常感谢您的帮助。我相信我需要在这里做一个循环,以获得结果集的每个记录,但不确定如何。

请帮忙吗?非常感谢

1 个答案:

答案 0 :(得分: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