Sql 使用WHILE循环将多个表中的指定列插入到一个表中

Sql 使用WHILE循环将多个表中的指定列插入到一个表中,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有三张桌子。我必须从其中两个表中选择几个指定的列,并将它们插入到一个表中。然而,当我试图将它们拼成一个时,它不会像我预期的那样进行 [附表a] Col_A Col_B Col_C Col_D ... 101 10 15 AAA 102 20 25 BBB [附表b] Col_D Col_E Col_F Col_G ... 201 30 35 C

我有三张桌子。我必须从其中两个表中选择几个指定的列,并将它们插入到一个表中。然而,当我试图将它们拼成一个时,它不会像我预期的那样进行

[附表a]

Col_A    Col_B    Col_C    Col_D ...
  101       10       15      AAA
  102       20       25      BBB
[附表b]

Col_D    Col_E    Col_F    Col_G ...
  201       30       35      CCC
  202       40       45      DDD
[表C]“目标”表

   Column_01             Column_02            Column_03 ...
TableA.Col_A-Row1     TableA.Col_B-Row1            0
       0                     0            TableB.Col_E-Row_1 ...
TableA.Col_A-Row2     TableA.Col_B-Row2            0
       0                     0            TableB.Col_E-Row_2 ...
       0                     0            TableB.Col_E-Row_3 ...
       0                     0            TableB.Col_E-Row_4 ...
我需要插入一些列,而不是全部从TableA和TableB插入TableC,在插入TableA列时,默认值(在本例中为0)必须插入到其余列中。TableB的情况也是如此。 这些插入操作的一个巧妙之处是,TableA与TableB的记录之间存在着1toN关系

现在我想通过简单的查询来实现它,如下所示:

INSERT INTO TableC (
  Column_01, Column_02, Column_03 ...
)
SELECT 
  TableA.Col_A, Table_A.Col_B, 0 ...
FROM TableA
但我也听说我可以使用游标在TableA的循环中迭代TableB

有什么办法解决这个问题吗?我读过好几本TSQL和SQL Server编程书籍,但没有一本书描述过这种“针对设计糟糕的表的查询”,只是简单的SQL基础知识

我知道这不是一个很复杂的问题,但我对存储过程和TSQL还不熟悉,不知道从哪里开始


谢谢。

使用光标可能不是个好主意。由于没有匹配列,表A和表B之间没有关系;您可能可以像这样将UNION与insert一起插入select from


感谢您的快速回答和详细解释!对不起,我的描述不清楚,不好。不幸的是,表a和表B之间有一个1对N的关系,这一点让我很恼火。若SQL过程可以使用数组,那个么这将是一项简单的任务。几乎一个月后,除了Rahul,并没有人想出解决方案。虽然我不允许使用UNION,因为表之间的关系有点混乱,但对于任何有类似问题的人来说,这都是一个很大的帮助。所以我接受他的解决方案作为这个案子的答案。谢谢你,拉胡尔!
INSERT INTO TableC (
  Column_01, Column_02, Column_03 ...
)
SELECT 
  TableA.Col_A, Table_A.Col_B, 0 ...
FROM TableA
UNION
SELECT 0, 0, TableB.Col_D, TableB.Col_E, ...
FROM TableB