我有两个表...我们可以根据emp_id值将它们称为employee和phonelist。
employee
具有emp_id, firstname, lastname
。phonelist
有一个emp_id, phonetype, phonenumber
。
员工可以使用任意数量的电话号码。 phonetype
中有一个固定的值列表,但对于本示例,我们只说“工作”,“单元格”,“家庭”。
我正在尝试生成查询以生成包含所有员工电话号码的报告。但是,他们希望每位员工一行,并且每对phonetype
/ phonenumber
对都显示在右侧。
因此,我试图生成一个查询,以将这样的值列表放在一起,其中每个员工都只有一行数据。如果电话号码没有价值,则为空白。
FIRSTNAME, LASTNAME, WORKNUMBER, CELLNUMBER, HOMENUMBER
使用类似以下的内容:
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'
此处使用了可选的(左外)联接,因为您不能确定每个人都有工作,手机和/或家庭电话号码。