首页 > 解决方案 > 如何将一条记录生成为两条记录,然后将它们插入到表中?

问题描述

我在sql server中有PKT表,结构(PKT(pso,day,msch,mskh,tkc,tkdu,st,mskh1))和另一个表(dong_bo(pso,day,msch,mskh,tk,psn,psc) )。对于 PKT 中的每一行,我需要将其生成为两行,然后将它们插入到 dong_bo 表中。例如:PKT 表。| pso | 天 | 女士 | 女士 | tkc | tkdu | 圣 | mskh1 | | --- | --- | ---- | ---- | --- | ---- | -- | ----- | | PKHT000105-12-20 | 2020 年 12 月 31 日 | 03 | 0802345 | C1411 | N3311 | 20000 | 7101259|

dong_bo 表:

pso msch 女士 传统知识 psn psc
PKHT000105-12-20 2020 年 12 月 31 日 03 0802345 1411 0 20000
PKHT000105-12-20 2020 年 12 月 31 日 03 7101259 3311 20000 0

我需要一个语句来在 SQL Server 中生成它。

标签: sql-server

解决方案


基本上你可以使用union all语句作为方法:

insert into dong_bo
select pso, day, mskh, right(tkc, 4) tkc, 0 psn, st psc from PKT
union all
select pso, day, mskh1, right(tkdu, 4) tkc, st psn, 0 psc from PKT;

在线查看此SQL

结果:

+==================+============+=========+======+=======+=======+
| pso              | day        | mskh    | tkc  | psn   | psc   |
+==================+============+=========+======+=======+=======+
| PKHT000105-12-20 | 31/12/2020 | 0802345 | 1411 | 0     | 20000 |
+------------------+------------+---------+------+-------+-------+
| PKHT000105-12-20 | 31/12/2020 | 7101259 | 3311 | 20000 | 0     |
+------------------+------------+---------+------+-------+-------+

推荐阅读