【问题标题】:SQL Insert record on For each record of the result setSQL Insert record on 对于结果集的每条记录
【发布时间】:2014-06-29 19:32:44
【问题描述】:

需要一些关于以下场景的建议。我有两个连接表(比如表 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

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

有什么帮助吗?非常感谢

【问题讨论】:

  • ProcessDT 列的值是多少??

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


【解决方案1】:

你不应该为此需要一个循环。假设您的字段是正确的,您可以使用Union 为每种类型执行此操作Insert

这应该适用于隐含结构:

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

【讨论】:

    猜你喜欢
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多