Как отобразить несколько объединенных таблиц в новые таблицы с разными именами столбцов - PullRequest
0 голосов
/ 14 апреля 2020

Таким образом, моя организация предоставляет данные другой организации, которая требует, чтобы данные соответствовали определенной схеме, но необходимые данные распределены по нескольким таблицам с разными именами полей.

Я сделал переход соответствующие поля (т. е. LOCATION_ID -> STATE_ID), где они применяются, а некоторые поля не существуют в наших данных. Мой вопрос носит концептуальный характер, так как я не уверен, каков наилучший подход. Любые указатели в правильном направлении будут полезны. Я наиболее знаком с Python и думал об использовании сценария Pandas или R-сценария для обработки данных и экспорта в новую таблицу, но я уверен, что в стандартном SQL есть более элегантное решение или t- SQL.

Редактировать:

Пример для предложений:

Исходная таблица

SITE_USE
UNKNOWN
ELEVATION
ELEV_METHOD
ELEV_DATUM

Новая таблица

Тип скважины
Индикатор регистратора уровня воды в скважине
Значение высоты поверхности земли (футы)
Метод определения высоты поверхности земли
Базовые данные о высоте поверхности земли

Ответы [ 2 ]

0 голосов
/ 14 апреля 2020

Я имею в виду представление .

В Oracle есть образец схемы Скотта, который содержит таблицы о сотрудниках и отделах. Простой запрос без сопоставления для каких-либо столбцов выглядит следующим образом:

SQL> select e.deptno, d.dname, e.empno, e.ename, e.job, e.sal
  2  from emp e join dept d on e.deptno = d.deptno
  3  where d.deptno = 10;

    DEPTNO DNAME               EMPNO ENAME      JOB              SAL
---------- -------------- ---------- ---------- --------- ----------
        10 ACCOUNTING           7782 CLARK      MANAGER         2450
        10 ACCOUNTING           7839 KING       PRESIDENT       5000
        10 ACCOUNTING           7934 MILLER     CLERK           1300

SQL>

Теперь, если вы можете (почему не могли?) Создать такой запрос для ВАШИХ таблиц, простой вариант - создайте представление и выполните сопоставление столбцов. Например, тот же набор столбцов, что и выше:

SQL> create or replace view v_emps as
  2  select e.deptno as dept_number,
  3         d.dname  as dept_name,
  4         e.empno  as employee_id,
  5         e.ename  as employee_name,
  6         e.job,
  7         e.sal    as salary
  8  from emp e join dept d on e.deptno = d.deptno;

View created.

SQL>

Наконец, нужно просто запросить данные, которые вам нужны, и предоставить их тем, кто в них нуждается, с совершенно новыми именами столбцов:

SQL> select * from v_emps
  2  where dept_number = 10;

DEPT_NUMBER DEPT_NAME      EMPLOYEE_ID EMPLOYEE_N JOB           SALARY
----------- -------------- ----------- ---------- --------- ----------
         10 ACCOUNTING            7782 CLARK      MANAGER         2450
         10 ACCOUNTING            7839 KING       PRESIDENT       5000
         10 ACCOUNTING            7934 MILLER     CLERK           1300

SQL>

Дополнительное отображение не требуется; выполнить любой запрос, он выполнит:

SQL> select * from v_emps
  2  where job = 'CLERK';

DEPT_NUMBER DEPT_NAME      EMPLOYEE_ID EMPLOYEE_N JOB           SALARY
----------- -------------- ----------- ---------- --------- ----------
         10 ACCOUNTING            7934 MILLER     CLERK           1300
         20 RESEARCH              7876 ADAMS      CLERK           1100
         20 RESEARCH              7369 SMITH      CLERK            800
         30 SALES                 7900 JAMES      CLERK            950

SQL>

Если вы используете сервер MS SQL (в отношении упомянутого вами T- SQL), проблем тоже нет; там тоже есть виды.

0 голосов
/ 14 апреля 2020

SQL Запрос прост для объединения таблиц с alias именами столбцов

  SELECT C.Id AS Identifier, C.LastName + ', ' + C.FirstName AS CustomerName
 FROM Order O JOIN Customer C ON O.CustomerId = C.Id

Здесь Order - одна таблица, Customer - другая таблица Каждая таблица имеет идентификатор псевдонима O и C соответственно CustomerName - это несуществующие столбцы из двух столбцов Identifier - это псевдоним, заданный для Id из таблицы Customer, C.Id

Таким же образом вы можете присоединиться к другой таблице и т. Д.

ON O.CustomerId = C.Id означает, что оба клиента таблица таблиц и заказов содержит одинаковые данные в этом столбце

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