我有两张不同的桌子。第一个称为#NB_RN,包含每个保单编号的新业务和续订交易及其相应的期限编号和一些其他保单详细信息:
pol_num | pol_term_num | trans_typ | 频道 |
---|---|---|---|
100 | 0 | 注意 | 是 |
100 | 1 | RN | P |
100 | 2 | RN | L |
101 | 0 | 注意 | R |
101 | 1 | RN | S |
101 | 2 | RN | 问 |
101 | 3 | RN | E |
channel 只是我为了示例而编写的一个随机字段。 trans_typ NB 始终为 pol_term_num 0,每个保单编号可能有不同的期限数,但此表中绝不会有两个相同的期限号。
第二个表称为#CHG,它包含与第一个表相同的所有字段,但事务类型是 CHG(表示“更改”),并包含 NB 和第一个 RN 之间发生的策略更改的策略详细信息术语,或后续 RN 术语之间:
pol_num | pol_term_num | trans_typ | 频道 |
---|---|---|---|
100 | 0 | CHG | 是 |
100 | 1 | CHG | P |
100 | 1 | CHG | P |
101 | 2 | CHG | 问 |
101 | 3 | CHG | E |
101 | 3 | CHG | E |
trans_typ CHG 永远不会有 pol_term_num 0,但可以有任何其他术语编号。同一术语中可以有任意数量的更改。
使用 SQL Server,我想将 #NB_RN 表中的行添加到 #CHG 表中,这些行的 pol_num 和 pol_term_num 与 #CHG 表中已有的相同。对于上面的例子,结果应该是这样的:
pol_num | pol_term_num | trans_typ | 频道 |
---|---|---|---|
100 | 0 | 注意 | 是 |
100 | 0 | CHG | 是 |
100 | 1 | RN | P |
100 | 1 | CHG | P |
100 | 1 | CHG | P |
101 | 2 | RN | 问 |
101 | 2 | CHG | 问 |
101 | 3 | RN | E |
101 | 3 | CHG | E |
101 | 3 | CHG | E |
我怎样才能实现这一目标?
我尝试使用 INSERT INTO 和 select 语句连接表,但我无法弄清楚其中的逻辑。
编辑:我想我已经明白了,但是有人可以验证我的逻辑吗?我将 #CHG 表中的所有行放入新表 #POLS 中。然后我使用 INSERT INTO 新的 #POLS 表并使用 SELECT 语句连接 pol_num 和 pol_term_num 上的两个原始表。
SELECT *
INTO #POLS
FROM #CHG
INSERT INTO #POLS
SELECT DISTINCT A.*
FROM #NB_RN A
INNER JOIN #CHG B
ON A.POL_NUM = B.POL_NUM
AND A.POL_TERM_NUM = B.POL_TERM_NUM
使用insert into命令我们可以执行它 插入#CHG(pol_num,pol_term_num,trans_typ,channel)值(从#NB_RN中选择pol_num,pol_term_num,trans_typ,channel)