oracle sql查询:使用相同的ID作为独立列获取表中的所有条目

问题描述 投票:0回答:1

我有两个表...我们可以根据emp_id值将它们称为employee和phonelist。

employee具有emp_id, firstname, lastnamephonelist有一个emp_id, phonetype, phonenumber

员工可以使用任意数量的电话号码。 phonetype中有一个固定的值列表,但对于本示例,我们只说“工作”,“单元格”,“家庭”。

我正在尝试生成查询以生成包含所有员工电话号码的报告。但是,他们希望每位员工一行,并且每对phonetype / phonenumber对都显示在右侧。

因此,我试图生成一个查询,以将这样的值列表放在一起,其中每个员工都只有一行数据。如果电话号码没有价值,则为空白。

FIRSTNAME, LASTNAME, WORKNUMBER, CELLNUMBER, HOMENUMBER
sql database oracle join report
1个回答
0
投票

使用类似以下的内容:

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'

此处使用了可选的(左外)联接,因为您不能确定每个人都有工作,手机和/或家庭电话号码。

© www.soinside.com 2019 - 2024. All rights reserved.