Как создать кросс-таблицу для заполнения значений для нового столбца, созданного в SQL ORACLE - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть столбец с кодами штата и страны.Проблема в том, что нам нужно разделить это на 2 столбца (new_state и new_country), чтобы эффективно использовать данные.Сначала я думал об использовании команды вставки для каждого отдельного кода state_country, но это не показалось эффективным.Я читаю, и похоже, что кросс-стол - это путь, но мне было интересно, сможет ли кто-нибудь пролить свет на то, как заставить этот мяч катиться.Спасибо всем.

STATE_COUNTRY   NEW_STATE   NEW_COUNTRY
     PA                      
     VA
     NY
     JP
     KR


Вот как должен выглядеть результат.

enter image description here

1 Ответ

1 голос
/ 26 сентября 2019

Похоже, вам нужна какая-то справочная (перекрестная) таблица, указывающая, является ли STATE_COUNTRY американским или иностранным государством.

Прежде всего, создайте и заполните эту таблицу:

CREATE TABLE american_states
(
  abbreviation VARCHAR2(2),
  description  VARCHAR2(64)
);

INSERT INTO american_states (abbreviation, description)
  VALUES ('PA', 'Pennsylvania');
INSERT INTO american_states (abbreviation, description)
  VALUES ('VA', 'Virginia');
INSERT INTO american_states (abbreviation, description)
  VALUES ('NY', 'New York');
...

Затем обновите исходную таблицу, используя эту справочную таблицу:

UPDATE my_table
   SET new_state = state_country,
       new_country = 'US'
 WHERE state_country IN (SELECT abbreviation FROM american_states);

UPDATE my_table
   SET new_state = 'NA',
       new_country = state_country
 WHERE state_country NOT IN (SELECT abbreviation FROM american_states);

ОБНОВЛЕНИЕ:
Внезапно у меня сложилось впечатлениечто вы работаете не с базой данных, а с таблицей Excel ....

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