oracle sql запрос: получение всех записей в таблице с одинаковым идентификатором в виде отдельных столбцов - PullRequest
0 голосов
/ 20 марта 2020

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

employee имеет emp_id, firstname, lastname. phonelist имеет emp_id, phonetype, phonenumber.

Сотрудник может иметь любое количество телефонных номеров. В phonetype есть фиксированный список значений, но для этого примера, скажем, «работа», «ячейка», «дом».

Я пытаюсь сгенерировать запрос для создания отчета с все телефоны для сотрудников. Тем не менее, они хотят, чтобы одна строка на сотрудника и каждую пару phonetype / phonenumber отображалась справа.

Поэтому я пытаюсь сгенерировать запрос, чтобы собрать список значений, подобный этому, где Каждый сотрудник имеет ровно одну строку данных. И если номер телефона не имеет значения, он будет пустым.

FIRSTNAME, LASTNAME, WORKNUMBER, CELLNUMBER, HOMENUMBER

1 Ответ

0 голосов
/ 20 марта 2020

Используйте что-то вроде следующего:

SELECT e.FIRSTNAME,
       e.LASTNAME,
       wp.PHONENUMBER AS WORKNUMBER,
       cp.PHONENUMBER AS CELLNUMBER,
       hp.PHONENUMBER AS HOMENUMBER
  FROM EMPLOYEE e
  LEFT OUTER JOIN PHONELIST wp
    ON wp.EMP_ID = e.EMP_ID AND
       wp.PHONETYPE = 'work'
  LEFT OUTER JOIN PHONELIST cp
    ON cp.EMP_ID = e.EMP_ID AND
       cp.PHONETYPE = 'cell'
  LEFT OUTER JOIN PHONELIST hp
    ON hp.EMP_ID = e.EMP_ID AND
       hp.PHONETYPE = 'home'

Необязательные (LEFT OUTER) объединения, используемые здесь, потому что вы не можете быть уверены, что у всех есть рабочий, сотовый и / или домашний телефонный номер.

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