首页 > 解决方案 > 将一张表中的数据合并到第二张表中

问题描述

问题: 我有两个表,Table1 有 3 列 [CODE]、[CAT]、[GROUP],基于第 2 列和第 3 列中的值,我想在 Table2 中创建条目。

Table2 有 2 列 [CODE] 和 [ALTERNATECODE] - 另请注意 Table2 在开始时没有数据。

对于 Table1 中的每个条目(仅当有超过 1 个匹配条目时)我想在 table2 中为每个匹配的情况创建一个条目,table2.CODE = table1.code,并且 Table2.alternatecode = Table1.code 匹配条目(条目)。匹配在table1.CAT 和Table1.GROUP 上完成,所有匹配的条目必须在Table2 中具有所有其他匹配条目作为ALTERNATECODES。

SQL:

数据 - 表 1:

28644   138 10
27817   138 10
8019    138 11
8018    138 11
21044   138 12
20985   138 12
20986   138 12
10166   138 12
10165   138 12
8056    138 15
11611   139 1
21999   139 1
27497   139 1
11612   139 2
30245   139 3
84409   139 4
26023   139 4
22000   139 5

更新后 - 数据表 2:

28644   27817
27817   28644
8019    8018
8018    8019
21044   20985
21044   20986
21044   10166
21044   10165
20985   21044
20985   20986
20985   10166
20985   10165
20986   21044
20986   20985
20986   10166
20986   10165
10166   21044
10166   20985
10166   20986
10166   10165
10165   21044
10165   20985
10165   20986
10165   10166
11611   21999
11611   27497
21999   11611
21999   27497
27497   21999
27497   11611
84409   26023
26023   84409

所以基本上是匹配标准的结果。Table1 中的 1 个条目意味着 table2 中的 0 个条目,Table1 中的 2 个条目意味着我们在 table2 中有 2 个条目 Table1 中的 3 个条目意味着我们在 table2 中有 6 个条目

标签: sqlsql-server

解决方案


我希望我理解正确。听起来您想要使用不相等的代码自行加入类别和组。

INSERT INTO table2
            (code,
             alternatecode)
            SELECT t11.code,
                   t12.code
                   FROM table1 t11
                        INNER JOIN table1 t12
                                   ON t12.cat = t11.cat
                                      AND t12.group = t11.group
                                      AND t12.code <> t11.code;  

推荐阅读