Как создать оператор вставки, который будет вставлять значения E_PROVIDER_ID (PROV_ID, PROV_NAME, IDENTITY_ID) в E_PROVIDER_MAP, где IDENTITY_ID_TYPE = 125?
Мне нужна вставка для вставки значений из таблицы идентификаторов в таблицу сопоставления, чтобы:
E_PROVIDER_ID.PROV_ID = E_PROVIDER_MAP.I_PROV E_PROVIDER_ID.E_PROVIDER_ID = E_PROVIDER_ID.IDENTITY_ID E_PROVIDER_ID.E_PROV_NAME = E_PROVIDER_MAP.I_PROV_NAME E_PROVIDER_ID.E_PROV_NAME = E_PROVIDER_MAP.E_PROV_NAME
--Создать таблицу идентификаторов
create table E_PROVIDER_ID
(
PROV_ID VARCHAR2(50),
PROV_NAME VARCHAR2(50),
ID_LINE# VARCHAR2(50),
IDENTITY_TYPE_ID VARCHAR2(50),
ID_TYPE_NAME VARCHAR2(50),
IDENTITY_ID VARCHAR2(50),
)
- ВСТАВИТЬ ЗНАЧЕНИЯ
insert into E_PROVIDER_ID (PROV_ID, PROV_NAME, ID_LINE#, IDENTITY_TYPE_ID, ID_TYPE_NAME, IDENTITY_ID,)
values ('1005232', 'SMITH, BRIAN EDWARD', '5', '125', 'PROVIDER CODE ID', '020621');
insert into E_PROVIDER_ID (PROV_ID, PROV_NAME, ID_LINE#, IDENTITY_TYPE_ID, ID_TYPE_NAME, IDENTITY_ID,)
values ('1003556', 'SMITH, JOHN STUART', '4', '125', 'PROVIDER CODE ID', '026786');
insert into E_PROVIDER_ID (PROV_ID, PROV_NAME, ID_LINE#, IDENTITY_TYPE_ID, ID_TYPE_NAME, IDENTITY_ID,)
values ('1003595', 'SMITH, RICHARD F.', '5', '125', 'PROVIDER CODE ID', '029091');
insert into E_PROVIDER_ID (PROV_ID, PROV_NAME, ID_LINE#, IDENTITY_TYPE_ID, ID_TYPE_NAME, IDENTITY_ID,)
values ('1003602', 'SMITH, PAUL MATTHEW', '5', '125', 'PROVIDER CODE ID', '029761');
insert into E_PROVIDER_ID (PROV_ID, PROV_NAME, ID_LINE#, IDENTITY_TYPE_ID, ID_TYPE_NAME, IDENTITY_ID,)
values ('1003769', 'SMITH, MARC DROR', '4', '125', 'PROVIDER CODE ID', '029748');
insert into E_PROVIDER_ID (PROV_ID, PROV_NAME, ID_LINE#, IDENTITY_TYPE_ID, ID_TYPE_NAME, IDENTITY_ID,)
values ('1006776', 'SMITH, ULA V.', '6', '125', 'PROVIDER CODE ID', '034415');
insert into E_PROVIDER_ID (PROV_ID, PROV_NAME, ID_LINE#, IDENTITY_TYPE_ID, ID_TYPE_NAME, IDENTITY_ID,)
values ('1006946', 'SMITH, TIMOTHY P.', '7', '125', 'PROVIDER CODE ID', '034687');
insert into E_PROVIDER_ID (PROV_ID, PROV_NAME, ID_LINE#, IDENTITY_TYPE_ID, ID_TYPE_NAME, IDENTITY_ID,)
values ('1007032', 'SMITH, DAVID C.', '7', '125', 'PROVIDER CODE ID', '101754');
commit;
- Создать таблицу карты
create table E_PROVIDER_MAP
(
I_PROV NUMBER,
I_PROV_NAME VARCHAR2(50),
E_PROV NUMBER,
E_PROV_NAME VARCHAR2(50),
I_REC_INST VARCHAR2(8)
)
2 ответа
Думаю, вам просто нужен синтаксис insert . . . select
:
insert into E_PROVIDER_MAP(<columns go here>)
select PROV_ID, PROV_NAME, IDENTITY_ID
from E_PROVIDER_ID
where IDENTITY_ID_TYPE = 125;
Я не могу сразу сказать, каким должен быть список столбцов для таблицы «карта».
РЕДАКТИРОВАТЬ:
На основе вашего комментария и изменения вашего вопроса:
insert into E_PROVIDER_MAP(I_PROV, IDENTITY_ID, I_PROV_NAME, E_PROV_NAME)
select PROV_ID, E_PROVIDER_ID, E_PROV_NAME, E_PROV_NAME
from E_PROVIDER_ID
where IDENTITY_ID_TYPE = 125;
Я действительно отмечаю, что эти столбцы, похоже, не имеют ничего общего с операторами create table
в вопросе.
Поскольку вы выбираете из таблицы со столбцами VARCHAR, вам нужно выполнить вставку выбора с приведением.
Вставить в E_PROVIDER_MAP (I_PROV, IDENTITY_ID, I_PROV_NAME, E_PROV_NAME) выберите CAST (PROV_ID AS NUMBER), CAST (E_PROV AS NUMBER), I_PROV_NAME, E_PROV_NAME из E_PROVIDER_ID, где IDENTITY_ID_TYPE = 125;
Похожие вопросы
Новые вопросы
sql
Язык структурированных запросов (SQL) - это язык запросов к базам данных. Вопросы должны включать примеры кода, структуру таблицы, примеры данных и тег для используемой реализации СУБД (например, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 и т. Д.). Если ваш вопрос относится исключительно к конкретной СУБД (использует определенные расширения / функции), используйте вместо этого тег этой СУБД. Ответы на вопросы, помеченные SQL, должны использовать стандарт ISO / IEC SQL.