ORACLE: вставка нескольких записей на основе значения одного столбца - PullRequest
0 голосов
/ 17 сентября 2018

На основе значения столбца (COLUMN_NAME) в Таблице_1 я хочу вставить 3 новые записи в Таблицу_2. Какой лучший способ сделать это? Я пробовал это, как показано ниже, но я не хочу использовать три запроса, используя UNION ALL

SQL> DROP TABLE TABLE_2
Table dropped.
SQL> CREATE TABLE TABLE_2(EMP_ID VARCHAR2(10),VALUE VARCHAR2(10))
Table created.
SQL> TRUNCATE TABLE TABLE_2
Table truncated.
SQL> INSERT INTO TABLE_2
(EMP_ID,VALUE)
WITH TABLE_1 as 
(
    SELECT '111' AS EMP_ID,'COL1' COLUMN_NAME FROM DUAL
)
SELECT EMP_ID,CASE WHEN COLUMN_NAME = 'COL1' THEN 'RICK' END AS VALUE  
FROM TABLE_1
UNION ALL
SELECT EMP_ID,CASE WHEN COLUMN_NAME = 'COL1' THEN 'TOM' END AS VALUE  
FROM TABLE_1
UNION ALL
SELECT EMP_ID,CASE WHEN COLUMN_NAME = 'COL1' THEN 'ADAM' END AS VALUE  
FROM TABLE_1
COMMIT
3 rows created.
SQL> SELECT * FROM TABLE_2

EMP_ID     VALUE     
---------- ----------
111        RICK      
111        TOM       
111        ADAM      

3 rows selected.

1 Ответ

0 голосов
/ 17 сентября 2018

Вы можете использовать INSERT ALL:

INSERT ALL 
  INTO TABLE_2(EMP_ID,VALUE) VALUES (EMP_ID, 'Rick')
  INTO TABLE_2(EMP_ID,VALUE) VALUES (EMP_ID, 'Tom')
  INTO TABLE_2(EMP_ID,VALUE) VALUES (EMP_ID, 'Adam')
SELECT '111' AS EMP_ID,'COL1' COLUMN_NAME FROM DUAL;

db <> fiddle demo

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