分 2 个阶段插入表格



我有两个表:table1和table2(这两个表几乎相同,table2有一个额外的字段。 表1中有30列,表2中有31列。
我还有一个程序,一开始会得到一个数字。如果数字大于 10,我想从表1到表2的所有30列中的行。否则,我想插入第 1 到 20 列(来自表 1(,并插入第 20-30 列乘以 30。我已经为每种情况(高于/低于 10(创建了两个不同的"插入表",但我相信有更有效的方法,因为前 20 行在每种情况下都应该相同。 我想先插入前 20 行,然后输入"IF"语句,然后根据给定参数"插入"剩余的列。但是当然,我得到的是两行而不是一行。

解决方案是什么,所以我将所有数据插入一行?

下面是一个包含 10 列(而不是 30 列(的示例。在此示例中,如果参数大于 10,我们将按原样将行插入到 table2中。否则,我们将插入 Col1-Col7,并将 Col8-Col10 相乘。
参数 = 15

表1

Col1 | Col2 | Col3 | Col4 | Col5 | Col6 | Col7 | Col8 | Col9 |Col10 | 
======+======+======+======+======+======+======+======+======+======+
1   |   1  |  1   |   2  |   2  |   2  |   2  |  5   |   5  |   5  |   

2(与表1相同,因为参数>10(

Col1 | Col2 | Col3 | Col4 | Col5 | Col6 | Col7 | Col8 | Col9 |Col10 | 
======+======+======+======+======+======+======+======+======+======+
1   |   1  |  1   |   2  |   2  |   2  |   2  |  5   |   5  |   5  |     

如果参数是参数 = 3,则表 2 为:

表2(第8-10列相乘(

Col1 | Col2 | Col3 | Col4 | Col5 | Col6 | Col7 | Col8 | Col9 |Col10 | 
======+======+======+======+======+======+======+======+======+======+
1   |   1  |  1   |   2  |   2  |   2  |   2  | 150  | 150  | 150  |  

A template to my code:  
if @Parameter >10  
begin  
INSERT INTO Table1  
(Col1  
,Col2  
,Col3  
...
,Col29  
,Col30)  
SELECT  
Col1  
,Col2  
,Col3  
...
,Col29  
,Col30  
FROM ...
wHERE ...  
end  
else  
begin  

INSERT INTO Table1  
(Col1  
,Col2  
,Col3  
...
,Col29  
,Col30)  
SELECT  
Col1  
,Col2  
,Col3  
...
,Col29  
,Col30  
FROM ...
wHERE ...  
end  

现在我有超过 120 行,当其中的 2/3 被复制时。
如何提高工作效率?

尽我所能,你可以使用你的问题,插入所有命令

例如:-

全部插入 当数字>10 则 输入表1 值(列1,列2,列3( 输入表1 值(列1,列2,列3( 当编号<10 输入表1 值(列1,列2,列3( 输入表1 值(列1,列2,列3( 从双中选择 *

根据您的要求使用条件

最新更新