我有一个数据集,如下所示。
EMPLID PHONE_TYPE PHONE
------ ---------- --------
100 HOME 111-1111
100 WORK 222-2222
101 HOME 333-3333
102 WORK 444-4444
103 OTHER 555-5555
我想使用PHONE_TYPE字段为每个员工选择恰好一行来建立首选项。如果员工有一个,则我想要HOME电话号码,如员工100和101一样。如果没有HOME号码,我想要工作号码(员工102),作为最后的选择,我会取其他编号与103号员工相同。实际上,我的表的PHONE_TYPE字段大约有十二个值,因此我需要能够扩展任何解决方案,使其不仅包含示例中显示的三个值。有什么想法吗?谢谢。
最佳答案
我忘了,Server 2000是否支持Coalesce?如果是这样,我认为这会起作用:
Select Distinct EmplID, Coalesce(
(Select Phone from Employees where emplid = e1.emplid and phone_type = 'HOME'),
(Select Phone from Employees where emplid = e1.emplid and phone_type = 'WORK'),
(Select Phone from Employees where emplid = e1.emplid and phone_type = 'OTHER')
) as Phone
From Employees e1