Вставить в таблицу, в 2 этапа - PullRequest
0 голосов
/ 16 июня 2020

У меня есть две таблицы: table1 и table2 (таблицы почти идентичны, table2 имеет дополнительное поле. 30 столбцов в table1 и 31 столбец в table2. Дополнительный столбец является ключевым).
У меня также есть процедура, которая сначала получает номер. Если число больше 10, я хочу пометить строку во всех 30 столбцах от table1 до table2. В противном случае я хочу вставить столбцы с 1 по 20 (из таблицы 1) и вставить столбцы с 20-30, умноженные на 30. Я создал два разных «ВСТАВИТЬ В ТАБЛИЦУ» для каждой ситуации (выше / ниже 10), но я верю, что есть более эффективный способ, так как первые 20 строк должны быть одинаковыми во всех случаях. Я подумал вставить сначала первые 20 строк, а после ввода оператора «IF» и затем «вставить» в соответствии с заданным параметром оставшиеся столбцы. Но у меня, конечно, получается две строки вместо одной.

какое решение, так что я вставлю все данные в одну строку?

Вот пример с 10 столбцами (вместо 30). В этом примере, если параметр больше 10, мы вставим строку как есть в table2 . в противном случае мы вставим col1-col7 и умножим col8-col10.
параметр = 15

table1

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

table2 (Идентично таблице 1, потому что параметр> 10)

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

Если параметр был параметр = 3 , тогда таблица 2 будет:

table2 (столбцы 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 из них дублируются.
Как сделать это эффективнее?

1 Ответ

0 голосов
/ 16 июня 2020

Насколько я мог, вы могли бы использовать вашу проблему, ВСТАВЬТЕ ВСЕ КОМАНДЫ

, например: -

ВСТАВЬТЕ ВСЕ КОГДА число> 10 ТОГДА В ЗНАЧЕНИЯ table1 (col1, col2, col3) INTO table1 VALUES (col1, col2, col3) WHEN number <10 INTO table1 VALUES (col1, col2, col3) INTO table1 VALUES (col1, col2, col3) выберите * из двойного </p>

условия использования согласно вашему требованию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...